長度自適應 自動換行Flowlayout

2021-07-30 20:48:41 字數 2855 閱讀 2719

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...