@Override
protected voidonMeasure(intwidthMeasureSpec,intheightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
intchildCount = getChildCount();
intsizeWidth = MeasureSpec.getSize(widthMeasureSpec);
floatleft =0.0f,right=0.0f,top=0.0f,bottom=0.0f;
intlines = sizeWidth;
View view;
intchildWidth;
intlineItems =0;
Position position ;
for(inti=0; i < childCount ; i++){
view = getChildAt(i);
measureChild(view,widthMeasureSpec,heightMeasureSpec);
childWidth = view.getMeasuredWidth() ;
if(lines - childWidth >=mPadding){
if(right ==0){
lines -= childWidth;
right =1;
}else{
lines -= (childWidth +mPadding);
}
lineItems ++;
if(i == childCount-1){
right =0;
for(intj = i - lineItems +1;j <= i;j++){
if(right ==0){
left = right;
}else{
left = right +mPadding;
}
right = left + getChildAt(j).getMeasuredWidth();
bottom = top + getChildAt(j).getMeasuredHeight();
position =newPosition(left,top,right,bottom);
getChildAt(j).setPadding(10,5,10,5);
getChildAt(j).setTag(position);
}
}
}else{
right =0;
floatlinesPadding = lines / (2* lineItems);
for(intj = i - lineItems; j < i ;j++){
if(right ==0){
left = right;
}else{
left = right +mPadding;
}
right = left + getChildAt(j).getMeasuredWidth() +2* linesPadding;
bottom = top + getChildAt(j).getMeasuredHeight();
position =newPosition(left,top,right,bottom);
getChildAt(j).setPadding((int)linesPadding,5,(int)linesPadding,5);
getChildAt(j).setTag(position);
}
lines = sizeWidth;
right =0;
top = bottom +10;
lineItems =0;
i--;
}
}
setMeasuredDimension(sizeWidth, (int) bottom);
}
网友评论