Back to project page android-calendarview.
The source code is released under:
Apache License
If you think the Android project android-calendarview listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
// Copyright 2012 Square, Inc. package com.tripadvisor; // w w w . j a v a 2 s . co m import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import static android.view.View.MeasureSpec.AT_MOST; import static android.view.View.MeasureSpec.EXACTLY; import static android.view.View.MeasureSpec.makeMeasureSpec; /** TableRow that draws a divider between each cell. */ public class CalendarRowView extends ViewGroup { private int cellSize; public CalendarRowView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void addView(View child, int index, LayoutParams params) { super.addView(child, index, params); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { long start = System.currentTimeMillis(); final int totalWidth = MeasureSpec.getSize(widthMeasureSpec); cellSize = totalWidth / 7; int cellWidthSpec = makeMeasureSpec(cellSize, EXACTLY); int cellHeightSpec = makeMeasureSpec(cellSize, AT_MOST); int rowHeight = 0; for (int c = 0, numChildren = getChildCount(); c < numChildren; c++) { final View child = getChildAt(c); child.measure(cellWidthSpec, cellHeightSpec); // The row height is the height of the tallest cell. if (child.getMeasuredHeight() > rowHeight) { rowHeight = child.getMeasuredHeight(); } } final float rowHeightDimension = getResources().getDimension(R.dimen.calendar_footer_height); final int widthWithPadding = totalWidth + getPaddingLeft() + getPaddingRight(); final int heightWithPadding = (int)Math.max(rowHeightDimension, rowHeight) + getPaddingTop() + getPaddingBottom(); setMeasuredDimension(widthWithPadding, heightWithPadding); Logr.d("Row.onMeasure %d ms", System.currentTimeMillis() - start); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { long start = System.currentTimeMillis(); int cellHeight = bottom - top; for (int c = 0, numChildren = getChildCount(); c < numChildren; c++) { final View child = getChildAt(c); child.layout(c * cellSize, 0, (c + 1) * cellSize, cellHeight); } Logr.d("Row.onLayout %d ms", System.currentTimeMillis() - start); } }