public classflowlayoutextendsviewgrouppublicflowlayout(context context, attributeset attrs)
publicflowlayout(context context)
@override
protected voidonmeasure(intwidthmeasurespec,intheightmeasurespec)else// 未換行
// 特殊情況,最後乙個控制項
if(i == ccount - 1)
}setmeasureddimension(
modewidth == measurespec.exactly? sizewidth : width + getpaddingleft() + getpaddingright(),
modeheight == measurespec.exactly? sizeheight : height + getpaddingtop() + getpaddingbottom()//
); }
/*** 儲存所有的view
*/privatelist>mallviews=newarraylist>();
/*** 每一行的高度
*/privatelistmlineheight=newarraylist();
@override
protected voidonlayout(booleanchanged,intl,intt,intr,intb)
linewidth += childwidth + lp.leftmargin+ lp.rightmargin;
lineheight = math.max(lineheight, childheight + lp.topmargin+ lp.bottommargin);
lineviews.add(child);
}// for end
// 處理最後一行
mlineheight.add(lineheight);
mallviews.add(lineviews);
// 設定子view的位置
intleft = getpaddingleft();
inttop = getpaddingtop();
// 行數
intlinenum =mallviews.size();
for(inti = 0; i < linenum; i++)
marginlayoutparams lp = (marginlayoutparams) child
.getlayoutparams();
intlc = left + lp.leftmargin;
inttc = top + lp.topmargin;
intrc = lc + child.getmeasuredwidth();
intbc = tc + child.getmeasuredheight();
// 為子view進行布局
child.layout(lc, tc, rc, bc);
left += child.getmeasuredwidth() + lp.leftmargin+ lp.rightmargin;
}left = getpaddingleft();
top += lineheight;}}
/*** 與當前viewgroup對應的layoutparams
*/@override
publiclayoutparams generatelayoutparams(attributeset attrs)
}
<com.example.lipei20171216.flowlayoutandroid:id="@+id/flowlayout"android:layout_width="match_parent"android:layout_height="wrap_content">com.example.lipei20171216.flowlayout>
privateflowlayoutmflowlayout;privatelayoutinflaterminflater;
privatestringmvals=newstring;
for(inti = 0; i <mvals.length; i++)});mflowlayout.addview(tv);
}
FlowLayout 流式布局加點選事件
簡單優化之後的 public class flowlayout extends viewgroup public flowlayout context context,attributeset attrs public flowlayout context context,attributeset ...
布局管理 流式布局
2007 11 16 14 18 使用流式布局管理器時,gui元件將按照新增入容器的順序自左而右排列在一行上,如果一行空間不足,則另起一行。預設情況下,元件是劇中排列的。可以通過改變面板的預設布局管理器來改變元件在每一行上的排列位置。語句示例如下 flowlayout fl new flowlayo...
網頁布局流式布局
工具所用到外掛程式 masonry 是 一款非常強大的jquery動態網格布局外掛程式,可以幫助開發人員快速開發類似剪貼畫的介面效果。和css中float的效果不太一樣的地方在 於,float先水平排列,然後再垂直排列,使用masonry則垂直排列元素,然後將下乙個元素放置到網格中的下乙個開發區域。...