时至今日google的sdk已经能更多的简化前端人员的工作量了,我们从拿到设计图用LinearLayout直接做比例堆叠保证页面的适配性,已经过渡到拿到设计图先看看用什么Layout能简化层级。
google提供的用于Window的Layout有很多,我挑几种常用的做一下介绍和选型
1)单组件显示
FrameLayout
这个特别适合做照片预览,装Fragment,装WebView,ScrollerView,一整页都是一个挺方便的,我没有对比过和LinearLayout、RelativeLayout之类的运行效率。
2)简单布局
LinearLayout,RelativeLayout
这两个一个适用于简单的横式/竖式布局,可以做比例,一个用于简单的分散布局省嵌套
在ConstraintLayout出现之前我更喜欢用LinearLayout来确保我页面的适配,所以如果你页面上东西不多,比如查看自选股票代码这种就完全可以LinearLayout嵌套TextView+ListView,简便快捷。
1)行列表格型
代表TableLayout,GridLayout
TableLayout是后者的简约版本,在书写上用TableRow包裹内容或者TableLayout才能制作出不同行列的效果,比较死板。
XML属性
android:layout_colum 指定该单元格在第几列显示
android:layout_span 指定该单元格占据的列数(未指定时,为1)
android:stretchColumns 设置可伸展的列。该列可向行方向伸展,最多可占据一整行
android:shrinkColumns 设置可收缩的列。当该列子控件的内容太多,已经挤满所在行,那么该子控件的内容将往列方向显示
android:layout_colum 指定该单元格在第几列显示
android:layout_span 指定该单元格占据的列数(未指定时,为1)
android:stretchColumns 设置可伸展的列。该列可向行方向伸展,最多可占据一整行
而GridLayout就自由多了,但这个我本身只用过一次,业务需求选型不太用得到
复杂布局
ConstraintLayout
前面说过了之前喜欢用LinearLayout做比例适配不同大小的屏幕,后来google出了ConstraintLayout,开始一阵也摸不着头脑,后来发现他综合了Linear和Relative的优点,如果说缺点的话,那就是拖拽的时候总是会把width给写成固定值,以及拖拽的时候定位的点不对这2点比较讨人厌了。
所以我其实更倾向于ConstraintLayout+手动修改。
ConstraintLayout这东西在做复杂的比例嵌套时能平铺层级,不过如果你还要适配横屏,那改动相对于LinearLayout来说就要大得多了,太简单的布局也不推荐使用。