顯示效果如下,自定義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的自定義?自定義...