Android常用的布局有:线性布局(LinearLayout)、相对布局(RelativeLayout)、网格布局(GridLayout)、表格布局(TableLayout)、绝对布局(AbsoluteLayout)、帧布局(FrameLayout)、约束布局(ConstraintLayout)。下面主要介绍前三中布局。
线性布局
就是使控件可以水平或者垂直的排列。
线性布局的属性orientation来设置线性布局是horizontal还是vertical。可以利用layout_gravity、layout_weight、gravity来设置控件的位置。
相对布局
在相对布局中,控件可以相对于父级Layout设置控件位置,也可以相对于其他控件设置位置。
相对布局中的控件有很多属性来设置自己所处的位置。
属性如下:
属性声明 | 功能描述 |
layout_alignParentLeft | 是否与父级布局左对齐 |
layout_alignParentRight | 是否与父级布局右对齐 |
layout_alignParentTop | 是否与父级布局顶部对齐 |
layout_alignParentBottom | 是否与父级布局底部对齐 |
layout_toRightOf | 在指定控件的右边 |
layout_toLeftOf | 在指定控件的左边 |
layout_above | 在指定控件的上边 |
layout_below | 在指定控件的下边 |
layout_alignBaseline | 与指定控件水平对齐 |
layout_alignLeft | 与指定控件做左对齐 |
layout_alignRight | 与指定控件右对齐 |
layout_alignTop | 与指定控件顶部对齐 |
layout_alignBottom | 与指定控件底部对齐 |
相对与父级布局属性的设置为:android:layout_alignParentTop="true"。
相对于指定控件的属性的设置为:android:layout_alignTop="@+id/控件ID"。
网格布局
就是使控件位于网格中的某行某列。
网格布局除了定义宽高,还必须要定义columnCount,而rowCount,Android可以自行推断,可以不定义。
可以通过layout_row和layout_column来定位控件的位置,layout_row、layout_column都是从0开始计算的。
控件通过layout_columnSpan属性来设置该控件占据几列。