Frame Layout
无法控制他的子控件的位置,所有的控件都是左上对齐,但是控件本身是可以控制自己内部的布局
Linear Layout
1)使用android:orientation属性设置Layout是horizontal还是vertical的排列方式
2)同样没法直接控制控件的具体位置,以及相对的位置关系。每个控件都依次摆放。不过控件间的间距可以调整,控件也不会相互覆盖。线性布局可以嵌套使用,可以在一个纵向布局中加入一个横向布局。用这种嵌套方式,可以完成一些稍微复杂的页面
Table Layout
1)以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件
1.1 当前行,为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列
1.2 当前行,为View时,该View将独占一行
2)列数的确定
2.1 TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行
2.2 TableLayout的列数等于含有最多子控件的TableRow的列数。如第一TableRow含2个子控件,第二个TableRow含3个,第三个TableRow含4个,那么该TableLayout的列数为4
3)属性
3.1 全局属性也即列属性,有以下3个参数:
android:stretchColumns 设置可伸展的列,该列可以向行方向伸展,最多可占据一整行。
android:shrinkColumns 设置可收缩的列,当该列子控件的内容太多,已经挤满所在行,那么该子控件的内容将往列方向显示。
android:collapseColumns 设置要隐藏的列
示例:
android:stretchColumns="0" 第0列可伸展
android:shrinkColumns="1,2" 第1,2列皆可收缩
android:collapseColumns="*" 隐藏所有行
说明:列可以同时具备stretchColumns及shrinkColumns属性,若此,那么当该列的内容N多时,将“多行”显示其内容
(这里不是真正的多行,而是系统根据需要自动调节该行的layout_height)
3.2 TableRow的属性,有以下2个参数:
android:layout_column 指定该单元格在第几列显示
android:layout_span 指定该单元格占据的列数(未指定时,为1)
示例:
android:layout_column="1" 该控件显示在第1列
android:layout_span="2" 该控件占据2列
说明:一个控件也可以同时具备这两个特性
Relative Layout
1)相对布局的子控件会根据它们所设置的参照控件和参数进行相对布局
2)参照控件可以是父控件,也可以是其它子控件,但是被参照的控件必须要在参照它的控件之前定义。(使用@id设置参照物,然后附加参照条件)
Absolute Layout(Deprecated)
1)绝对布局的子控件需要指定相对于此坐标布局的横纵坐标值,否则将会像Frame Layout那样被排在左上角
2)手机应用需要适应不同的屏幕大小,而这种布局模型不能自适应屏幕尺寸大小
是Android4.0新提供的网格矩阵形式的布局控件。
1)必备属性:
android:columnCount
android:rowCount
android:orientation(子元素的布局方向)
2)子元素属性
android:layout_column(显示该空间的列)
android:layout_columnSpan(该控件所占的列数)
android:layout_row(控件所在行)
android:layout_rowSpan(控件所占的行数)
android:layout_gravity(控件的布局方式)