@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);
}
自定义view仿bilibili的自适应tag
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 「博客搬家」 原地址: CSDN 原发表时间: 2016-10-12 本文主要总结使用 C# 及 .NET 在...