1.LinearLayout
线性布局,是一种常用的布局,所包含的控件在线性方向上排列,包括水平和竖直两个方向。通过android:orientation属性来指定排列方向是竖直vertical或者水平horizontal。如果LinerLayout的排列方向是horizontal,内部的控件就不能将宽度指定为match_parent,如果这样的话一个控件就单独把整个水平方向占满,其他控件就没有可放置的位置了。同样的道理,如果LinerLayout的排列方向是vertical,内部控件就不能把高度指定为match_parent。
下面来学习几个关键属性的用法。
android:gravity是用来指定文字在控件中的对齐方式。
android:layout_gravity是用于指定控件在布局中的对齐方式。当LinerLayout的排列方向为horizontal时,只有垂直方向上的对齐方式才会生效,因为此时水平方向上的长度是不固定的,每添加一个控件,水平方向的长度就会改变,因此无法指定该方向上的对齐方式。同理,当LinerLayout的排列方向是vertical时,只有水平方向上的对齐方式才会生效。
android:layout_weight这个属性允许我们使用比例的方式来指定控件的大小。系统会把LinerLayout下所有控件的layout_weight值相加,得到一个总值,然后每个控件所占大小的比例就是用该控件的layout_weight值除以刚才算出的总值。
2.RelativeLayout
相对布局,也是常用布局。它通过相对定位的方式让控件出现在布局的任何位置,比较灵活,适合复杂界面,位置属性比较多,可以根据其字面含义推断。可以指定控件相对控件的位置,也可指定控件相对布局的位置。在指定相对位置时,引用相对控件的ID必须在引用前定义,否则抛出异常。
下面来学习几个关键属性的用法。
android:layout_toLeftOf:该组件位于引用组件的左方。
android:layout_toRightOf:该组件位于引用组件的右方。
android:layout_above:该组件位于引用组件的上方。
android:layout_below:该组件位于引用组件的下方。
android:layout_alignParentLeft:该组件是否对齐父组件的左端。
android:layout_alignParentRight:该组件是否对齐父组件的右端。
android:layout_alignParentTop:该组件是否对齐父组件的顶部。
android:layout_alignParentBottom:该组件是否对齐父组件的底部。
android:layout_centerInParent:该组件是否相对于父组件居中。
android:layout_centerHorizontal:该组件是否横向居中。
android:layout_centerVertical:该组件是否垂直居中。
3.FrameLayout
帧布局,这种布局没有任何定位方式,所有控件都会摆放在布局的左上角。这个布局应用场景不多,一般在碎片的场景下,有些作用。
4.TableLayout
表格布局,不太常用,用表格的方式来排列控件,具有行和列适用于N行和N列的布局格式。可以通过android:layout_span属性来合并单元格,android:stretchColumns来进行拉伸。
另外还有一种绝对布局AbsoluteLayout,通过精确的坐标值来描述位置,已经不太推荐使用了。