安卓标签墙也是一个常见的应用场景,所以最近学习写了一个流式布局,并学习一下自定义控件的一种方法,继承ViewGroup.
思路:
1.流式布局1行只能放下固定数量的标签,所以用一个类来标明一行的数据,这样在onLayout方法中就只需要将每一行的数据放到正确的位置上就可以了。这样的一个行的类的属性基本也可以确定了:当前行的标签集合,当前行的宽度,当前行的高度,:
class LineBean {
public List<View> items;//标签集合
public int width;//行宽
public int height;//行高
}
2.首先当然是考虑viewgroup的尺寸,这个尺寸需要根据子控件的累计宽高来计算:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//首先先获取到给定的宽高以及模式
int specModeW = MeasureSpec.getMode(wid