布局管理器:
派生自 ViewGroup ,
作用
使用布局管理器可以适配不同手机屏幕, 具有良好的平台无关性
常用的
布局管理器
LinearLayout 线性布局
TableLayout表格布局
FrameLayout 帧布局
RelativeLayout相对布局
AbsoluteLayout 绝对布局
GridLayout 网格布局
布局管理器
间的
继承关系
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坐标来控制组件的位置,布局容器不再管理组件位置, 大小, 这些都可自定义。
AbsoluteLayoutXML属性
XML属性
说明
android:layout_x
指定组件的x坐标
android:layout_y
指定组件的y坐标
android:layout_width
是指定宽度是否充满父容器, 或者仅仅包含子元素的
android:width
指定组件的宽度
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中纵向跨几行