importandroid.annotation.suppresslint;importandroid.content.context;
importandroid.util.attributeset;
importandroid.view.view;
importandroid.view.viewgroup;
/*** 根據子view的寬度排列的流式布局
*/public classflowlayoutextendsviewgroup
publicflowlayout(context context, attributeset attrs)
publicflowlayout(context context, attributeset attrs,intdefstyleattr)
/*** 父容器生成 子view 的布局layoutparams;
* 一句話道出layoutparams的本質:layoutparams是layout提供給其中的children使用的。
* 如果要自定義viewgroup支援子控制項的layout_margin引數,
* 則自定義的viewgroup類必須過載generatelayoutparams()函式,
* 並且在該函式中返回乙個viewgroup.marginlayoutparams派生類物件,這樣才能使用margin引數。
*/@override
protectedlayoutparams generatelayoutparams(layoutparams p)
@override
publiclayoutparams generatelayoutparams(attributeset attrs)
@override
protectedlayoutparams generatedefaultlayoutparams()
@suppresslint("drawallocation")
@override
protected voidonmeasure(intwidthmeasurespec,intheightmeasurespec)else
intchildwidth = child.getmeasuredwidth() + lp.leftmargin+ lp.rightmargin;
intchildheight = child.getmeasuredheight() + lp.topmargin+ lp.bottommargin;
if(linewidth + childwidth > measurewidth)else
// 最後一行是不會超出width範圍的,所以要單獨處理
if(i == count - 1) }/*
* 當屬性是measurespec.exactly時,那麼它的高度就是確定的,
* 只有當是wrap_content時,根據內部控制項的大小來確定它的大小時,
* 大小是不確定的,屬性是at_most,此時,就需要我們自己計算它的應當的大小,並設定進去
*/setmeasureddimension(
(measurewidthmode == measurespec.exactly) ? measurewidth
: width,
(measureheightmode == measurespec.exactly) ? measureheight
: height);
}@override
protected voidonlayout(booleanchanged,intl,intt,intr,intb)else
// 計算childview的left,top,right,bottom
intlc = left + lp.leftmargin;
inttc = top + lp.topmargin;
intrc = lc + child.getmeasuredwidth();
intbc = tc + child.getmeasuredheight();
child.layout(lc, tc, rc, bc);
// 將left置為下一子控制項的起始點
left += childwidth;}}
}
UILabel自適應高度和自動換行
初始化label uilabel label uilabel alloc initwithframe cgrectmake 0,0,0,0 設定自動行數與字元換行 label setnumberoflines 0 label.linebreakmode uilinebreakmodewordwrap...
UILabel 自動換行 及 高度自適應
ios開發 uilabel 自動換行 及 高度自適應 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 uilabel label uilabel alloc initwithframe cgrectmake 10,1...
商城分類頁面自適應標題,自適應換行。
最近在做 做到分類覺得網上應該一大把現成的 搜了一會沒有搜到,懶人也懶不了了。寫了一會感覺還是有點需要思考的,寫下思路和貼上 可以參考下。最後作品 類似qq分組列表怎麼做就不說。我把子分類和 分類放到乙個cell裡了,所以核心 都在 uitableviewcell tableview uitable...