Android UI 组件 布局管理器

布局管理器

  派生自 ViewGroup ,
       作用 使用布局管理器可以适配不同手机屏幕, 具有良好的平台无关性
      
      常用的
   布局管理器
    • LinearLayout 线性布局

    • TableLayout 表格布局

    • FrameLayout  帧布局

    • RelativeLayout 相对布局

    • AbsoluteLayout  绝对布局

    • GridLayout  网格布局

  

  布局管理器
       间的
   继承关系
Android UI 组件 布局管理器



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