也许鲜有人听说GirdLayout, 但它还是存在的。
图中被我用线圈起来的部分,我相信不少人用的方法是一个纵向的LinearLayout,里面套两个横向的LinearLayout,然后在里面放上四个控件,宽度用weight适配。
没毛病。
可是老铁,你就从来没有想过减少一下布局的层级吗?
早在android4.0的时候, 就有了一个GridLayout,功能近似TableLayout,但是使用的便捷度比它好太多。
<GridLayout
android:id="@+id/grids"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="170dp"
android:orientation="horizontal"
android:background="@drawable/shape_home_menu"
android:columnCount="4"
android:layout_width="match_parent"
android:layout_height="150dp">
</GridLayout>
重要的参数有两个:orientation和columnCount。
就像LinearLayout的orientation一样,这个参数决定着子控件的排列规则。
columnCount决定着每行的子控件的个数。(其实还有一个决定GridLayout行数的参数rowCount,但是我在用的时候发现没什么卵用)
你在往里面添加子控件时发现,全都挤在一起,子控件的宽度用weight适配也没用,此时加上一句
android:layout_columnWeight="1"
就好了。哦,行与行之间还是挤在一起,那再加一句
android:layout_rowWeight="1"
不过最大的弊是兼容性问题,网上很多资料中说到会在android5.0以下,上面两个参数不管用,但是我在测试中发现,6.0以下就不管用了。
所以这个布局就在平时写Demo时玩玩就好了,或者大家如果有好的解决方案也可以在下方评论告诉我,小弟不胜感激。