allViews的每个Item为每行所有View的List集合。
mLineHeight记录的为每行的最大高度。 23-48行,遍历所有的childView,用于设置allViews的值,以及mLineHeight的值。 57行,根据allViews的长度,遍历所有的行数 67-91行,遍历每一行的中所有的childView,对childView的left , top , right , bottom 进行计算,和定位。 92-93行,重置left和top,准备计算下一行的childView的位置。 好了,到此完成了所有的childView的绘制区域的确定,到此,我们的FlowLayout的代码也结束了~~静下心来看一看是不是也不难~ 6、测试我准备使用TextView作为我们的标签,所以为其简单写了一点样式: res/values/styles.xml中:
[html] view plain copy
- <style name="text_flag_01">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_margin">4dp</item>
- <item name="android:background">@drawable/flag_01</item>
- <item name="android:textColor">#ffffff</item>
- </style>
flag_01.xml
[html] view plain copy
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android" >
-
- <solid android:color="#7690A5" >
- </solid>
-
- <corners android:radius="5dp"/>
- <padding
- android:bottom="2dp"
- android:left="10dp"
- android:right="10dp"
- android:top="2dp" />
-
- </shape>
|