自定義view實現流式布局

2021-08-04 07:17:24 字數 1996 閱讀 5155

顯示效果如下,自定義view,重寫onmeasure方法,測量wrap_content模式下控制項的寬高,重寫onlayout的方法,布局裡面的子view,支援paddign屬性.其實整個邏輯並不複雜,各位猿友可別複製貼上啊!

//如果是最後乙個控制項

if (i==ccount-1)

}setmeasureddimension(modewidth==measurespec.exactly?sizewidth:width+getpaddingleft()+getpaddingright(),

modeheight==measurespec.exactly?sizeheight:height+getpaddingbottom()+getpaddingtop());

heightmeasurespec);

}@override

protected

void

onlayout(boolean changed, int l, int t, int r, int b)

linewidth+=childwidth+lp.leftmargin+lp.rightmargin;

lineheight=math.max(lineheight,childheight+lp.topmargin+lp.bottommargin);

lineviews.add(child);

}//處理最後一行

mlineheight.add(lineheight);

mallviews.add(lineviews);

//設定子view的位置

int left=getpaddingleft();

int top=getpaddingtop();

//行數

int linenum=mallviews.size();

for (int i = 0; i < linenum; i++)

marginlayoutparams lp = (marginlayoutparams) child.getlayoutparams();

int lc=left+lp.leftmargin;

int tc=top+lp.topmargin;

int rc=lc+child.getmeasuredwidth();

int bc=tc+child.getmeasuredheight();

//為子view進行布局

child.layout(lc,tc,rc,bc);

left+=child.getmeasuredwidth()+lp.leftmargin+lp.rightmargin;

}left=getpaddingleft();

top+=lineheight;}}

//與當前viewgroup對應的layoutparams

@override

public layoutparams generatelayoutparams(attributeset attrs)

}

UGUI自定義GridView 流式布局

unity中對子物體的排序我們一般是使用gridlayoutgroup這個元件,但是這個元件會強行將子物體的width和height設定為相同的,但是如果遇到子物體的寬高不同的需求時,這個gridlayoutgroup將不再適用。此時需要我們自定義的編寫一套排序子物體的演算法 分為子view寬度一致...

Android自定義View實現

android自定義view實現很簡單 繼承view或者其子類,重寫建構函式 ondraw,onmeasure 等函式,根據繼承的類的不同可能有所不同。如果自定義的view需要有自定義的屬性,需要在values下建立attrs.xml。在其中定義你的屬性。在使用到自定義view的xml布局檔案中需要...

自定義View的實現

自定義view分為三種型別 0 繼承現有的ui控制項 實現特定功能,例如事件攔截,就像是我的slidingpanelayout和viewpager結合 自定義view 0 繼承現有的控制項 1 將多個控制項進行組合,形成新的自定義view radio動態指示器,radiobutton的自定義?自定義...