在做自定义ViewGroup的时候发现,添加进去的子ViewGroup中的视图统统都不见了,于是一点点测过去,发现原来是没有对子ViewGroup进行measure。
代码如下
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
if (width == 0)
return;
int actualWidth = width - getPaddingLeft() - getPaddingRight();
int count = getChildCount();
if (count <= 6) {
itemSize = (actualWidth - marginH * 7) / 6;
} else {
itemSize = (actualWidth - marginH * 8) / 7;
}
for (int i = 0; i < count; i++) {
View child = getChildAt(i);
child.getLayoutParams().width = itemSize;
child.getLayoutParams().height = itemSize;
measureChild(child, widthMeasureSpec, heightMeasureSpec);
}
int height = (itemSize + marginV) * rows + marginV + getPaddingTop() + getPaddingBottom();
setMeasuredDimension(width, height);
}
ps:这是是根据item个数进行自定义itemsize的控制。通常的做法是计算每个child中子项的宽高进行累加