Android UI 组件 布局管理器
布局管理器:
派生自 ViewGroup , | |
作用 | 使用布局管理器可以适配不同手机屏幕, 具有良好的平台无关性 |
常用的 布局管理器 |
|
布局管理器 间的 继承关系 |
LinearLayout 线性布局
将容器内的组件一个挨一个排列起来,可横(纵),无换行 (组件宽度溢出容器时,会对组件进行裁剪)
LinearLayout常用XML属性
XML属性 |
说明 |
|
android:baselineAligned |
设置该布局是(true)否(false)与子元素 基线对齐 |
|
android:divider | 设置垂直布局时两个按钮之间的分隔条 | |
android:gravity | 设置布局内组件(子元素)的对齐方式 属性: top, bottom, left, right, center_vertical,center_horizontal, fill_vertical, fill_horizontal,center, fill,clip_vertical, clip_horizontal; 可用 | 组合多种对齐方式 : 如 left|center_vertical 左侧垂直居中 |
|
android: measureWithLargestChild |
该属性为true的时候, 所有**带权重的子元素都会具有最大子元素的最小尺寸 | |
android:orientation | 设置布局内组件排列方式, 设置为 horizontal(水平), vertical(垂直) |
LinearLayout子元素支持的常用XML属性 (LinearLayout的子元素, 即LinearLayout中的组件)
XML属性 |
说明 |
|
android:layout_gravity | 指定该元素在LinearLayout(父容器)的对齐方式, 也就是“该组件本身的对齐方式”, 注意要与android:gravity区分 | |
android:layout_weight | 指定该元素在LinearLayout(父容器)中所占的权重,。例如都是1的情况下, 那个方向(LinearLayout的orientation方向)长度都是一样的 |
TableLayout 表格布局
在TableLayout中,一个TableRow就是一个表格行, 同时TableRow也是容器, 每添加一个组件, 就增加了一列;
直接向TableLayout中添加组件, 就相当于直接添加了一行,TableLayout中 列宽由 该列最宽的单元格决定。
表格布局中单元格的行为方式
-
Shrinkable : 如果某列被设为Shrinkable, 则该列所有单元格宽度可以被收缩, 保证表格能适应父容器的宽度;
-
Stretchable : 如果某列被设为Stretchable, 则该列所有单元格的宽度可以被拉伸, 保证表格能完全填满表格剩余空间;
-
Collapsed : 如果某列被设置成Collapsed, 那么该列所有单元格会被隐藏;
TableLayout 常用XML属性
XML属性 |
说明 |
|
android:collapsedColumns | 设置需要被隐藏的列的序号, 多列序号间用逗号隔开; | |
android:stretchColumns | 设置允许被拉伸的列的***, 多个序号间用逗号隔开 | |
android:shrinkableColumns | 设置允许被收缩的列的序号, 多个序号间用逗号隔开; |
FrameLayout 帧布局
帧布局中,每个组件占据一帧(层),这些帧会根据gravity属性执行自动对齐(把组件一个个叠加在一起)
FrameLayout 常用XML属性
XML属性 |
说明 |
|
android:foreground | 设置该帧布局 的前景图像 | |
android:foregroundGravity | 定义绘制前景图像的 gravity属性(对齐 属性) |
RelativeLayout 相对布局
相对布局容器中 子组件 的 位置 是以 兄弟组件、父容器 的位置作为参照来决定的
RelativeLayout 的XML属性
XML属性 |
说明 |
|
android:gravity | 设置该布局容器内各子组件的对齐方式 | |
android:ignoreGravity | 设置哪个组件不受gravity 属性影响 |
RelativeLayout.LayoutParams : RelativeLayout提供的内部类,用于控制 相对布局中子组件的布局分布。
RelativeLayout.LayoutParams 只能设为boolean值的XML属性
XML属性 |
说明 |
|
android:layout_centerHorizontal | 是否水平居中于父容器中 | |
android:layout_centerVertical | 是否垂直居中于父容器中 |
android:layout_centerInParent | 是否位于*于父容器中 | |
android:layout_alignParentBottom | 是否底端对齐于父容器中 | |
android:layout_alignParentTop | 是否顶端对齐于父容器中 | |
android:layout_alignParentLeft | 是否左边对齐于父容器中 | |
android:layout_alignParentRight | 是否右边对齐于父容器中 |
RelativeLayout.LayoutParams 只能设为其他UI组件ID值的XML属性
XML属性 |
说明 |
|
android:layout_toLeftOf | 位于所给 id 组件左侧 | |
android:layout_toRightOf | 位于所给 id 组件右侧 | |
android:layout_above | 位于所给id组件的上边 | |
android:layout_below | 位于所给id组件的下方 | |
android:layout_alignTop | 与所给id组件顶部对齐 | |
android:layout_alignBottom | 与所给id组件底部对齐 | |
android:layout_alignLeft | 与所给id组件左边对齐 | |
android:layout_alignRight | 与所给id组件右边对齐 |
AbsoluteLayout 绝对布局 <不能适配不同的分辨率, 屏幕大小,不建议使用>
以X坐标,Y坐标来控制组件的位置,布局容器不再管理组件位置, 大小, 这些都可自定义。
AbsoluteLayout XML属性
XML属性 |
说明 |
|
android:layout_x | 指定组件的x坐标 | |
android:layout_y | 指定组件的y坐标 | |
android:layout_width<height> | 是指定宽度是否充满父容器, 或者仅仅包含子元素的 | |
android:width<height> | 指定组件的宽度 |
GridLayout 网格布局
GridLayout将整个容器划分成rows * columns个网格 , 每个网格只可放置一个组件. 还可设置一个组件横跨多少列, 多少行。
GridLayout 的XML属性
XML属性 |
说明 |
|
android:alignmentMode | 设置网格布局管理器的对齐模式 | |
android:columnCount | 设置该网格布局的列数 | |
android:columnOrderPreserved | 设置网格容器是否保留列*** | |
android:rowCount | 设置该网格的行数 | |
android:rowOrderPreserved | 设置该网格容器是否保留行*** | |
android:useDefaultMargins | 设置该布局是否使用默认的页边距 |
GridLayout.LayoutParams : GridLayout提供的内部类,用于控制 该网络的 行数量 和 列数量。
GridLayout.LayoutParams 的XML属性
XML属性 |
说明 |
|
android:layout_column | 设置子组件在GridLayout的第几列 | |
android:layout_columnSpan | 设置该子组件在GridLayout中横向跨几列 | |
android:layout_gravity | 设置该组件采用何种方式占据该网格的空间 | |
android:layout_row | 设置该子组件在GridLayout的第几行 | |
android:layout_rowSpan | 设置该子组件在GridLayout中纵向跨几行 |
转载于:https://my.oschina.net/2devil/blog/378254