六大布局
1 | 线性布局 | LinearLayout |
2 | 表格布局 | TableLayout |
3 | 相对布局 | RelativeLayout |
4 | 层布局 | FrameLayout |
5 | 绝对布局 | AbsoluteLayout |
6 | 网格布局 | GridLayout |
一、线性布局:LinearLayout
序号 | 属性 | 说明 |
1 | android:orientation="horizontal" android:orientation="vertical" | 1)水平线性布局,布局内部所有的控件水平排列 2)垂直线性布局,布局内所有的控件垂直排列 |
2 | android:gravity="" | 1)center:如果是水平排列则只有水平居中有效果,如果是垂直排列则只有垂直居中有效果 2)center_vertical:垂直居中(仅在控件垂直排列时有效) 3)center_horizontal:水平居中(仅在控件水平排列时有效) 4)top:垂直靠上对齐(仅在控件垂直排列时有效) 5)bottom:底部对齐(仅在控件垂直排列时有效) 6)left:水平靠左(仅在控件水平排列时有效) 7)right:水平靠右(仅在控件水平排列时有效) ps:当父类控件的gravity和子类控件的layout_gravity发生冲突的时候,采用的是父类属性gravity的效果。 |
3 | android:layout_weight="1" | 1)权重,默认为0 2)权重设置之后可以在水平方向和垂直方向上的长度生效,通常来讲需要使用到权重的方向,该方向上的空间长度不设置或设置为零。 3)渲染时先按照控件正常尺寸渲染,当还有屏幕剩余空间时,按照各个控件的权重大小进行比例分配,占满全屏。 |
| | |
二、相对布局:RelativeLayout
通常情况下相对布局都是通过id进行管理的,都会加id属性
序号 | 属性 | 说明 |
1 | android:layout_alignParentTop | 控件的顶部与父控件的顶部对齐 |
2 | android:layout_alignParentBottom | 控件底部与父控件底部对齐 |
3 | android:layout_alignParentLeft | 与父控件左部对齐 |
4 | android:layout_alignParentRight | 与父控件右部对齐 |
以下属性是相对于其他控件而言的属性,采用参照方式 android:layout_above="@id/name" | ||
1 | android:layout_above | 控件的底部置于给定ID控件之上 |
2 | android:layout_below | 控件的顶部置于给定ID控件之下 |
3 | android:layout_toLeftOf | 控件的右边缘与给定ID控件的左边缘对齐(控件在给定ID控件的左边) |
4 | android:layout_toRightOf | 控件的左边缘与给定ID控件的右边缘对齐(控件在给定ID控件的右边) |
5 | android:layout_alignBaseline | 控件的baseline与给定ID控件的baseline对齐(什么是baseline?) |
6 | android:layout_alignTop | 控件的顶部边缘域给定ID控件的顶部边缘对齐 |
7 | android:layout_alignBottom | 控件的底部边缘域给定ID控件的底部边缘对齐 |
8 | android:layout_alignLeft | 控件的左边缘与给定ID控件的左边缘对齐 |
9 | android:laytout_alignRight | 控件的右边缘与给定ID控件的右边缘对齐 |
居中 | ||
1 | android:layout_centerInParent="true" | |
2 | android:layout_centerHorizontal | 水平居中 |
3 | android:layout_centerVertical | 垂直居中 |
4 | android:layout_centerInParent | 父控件的中央 |
| | |
三、层布局:FrameLayout
主要应用在地图APP设计当中,普通软件设计用的不多,从屏幕左上角按照层次堆叠方式布局,后面的空间覆盖前面的控件。
四、绝对布局:AbsoluteLayout
绝对布局通过 android:layout_x及android:layout_y属性定位出坐标绝对位置,不是很常用,因为终端机型比较多,采用绝对定位容易导致显示兼容性不佳的问题。
五、表格布局:TableLayout
每个TableLayout由多个TableRow组成,一个TableRow就是一行,实际上TableLayout就是LinearLayout的验身,只不过固定了以下几个属性的设置:android:orientation="horizontal" android:layout_width=“match_parent”, android:layout_height="wrap_content"。
序号 | 属性 | 说明 |
1 | android:shrinkColumns | 设置可收缩的列,当内容过多的时候则自动收缩显示在第二行 |
2 | android:stretchColumns | 设置可伸展的列,将空白区域填充满整个列的宽度 |
3 | android:collapseColumns | 设置要隐藏的列 |
4 | android:layout_column | 第几列 |
5 | android:layout_span | 占据列数 |
| | |
六、网格布局:GridLayout
序号 | 属性 | 说明 |
1 | android:orientation="" | 组件排序方式 vertival:垂直,默认 horizonal:水平 |
2 | android:layout_gravity="" | 组件对齐方式 center left right bottom |
3 | android:rowCount="4" | 设置网格布局为4行 |
4 | android:columnCount="4" | 设置网格布局为4列 |
5 | android:layout_row="1" | 设置组件位于第二行 |
6 | android:layout_column="2" | 设置组件位于第三列 |
7 | android:layout_rowSpan="2" | 纵向横跨2行 |
8 | android:layout_columnSpan="3" | 横向横跨2列 |