Anroid UI——布局

一、Android六大基本布局

  • Android六大基本布局分别是:线性布局LinearLayout、表格布局TableLayout、相对布局RelativeLayout、帧布局FrameLayout、绝对布局AbsoluteLayout、网格布局GridLayout。
  • 其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。在手机程序设计中,绝对布局基本上不用,用得相对较多的是线性布局和相对布局。
    在这里插入图片描述

二、LinearLayout(线性布局)

常用属性:

  • android:id:为该组件添加一个资源id,即标识符,可以通过id来找到该布局或者控件。
  • android:layout_width:布局的宽度,用wrap_content表示组件的实际宽度,match_parent表示填充父容器
  • android:layout_height:布局的长度,用wrap_content表示组件的实际长度,match_parent表示填充父容器
  • android:orientation:布局中的排列方式,有两种方式:horizontal水平,vertical竖直,如果不设置则默认水平显示
    • orientation 是一个视图组,可以在一个方向垂直或者水平分布所有子项
    • 当 android:orientation=“vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用.即:left,right,center_horizontal 是生效的.
    • 当 android:orientation=“horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用.即:top,bottom,center_vertical 是生效的.
  • android:gravity:控制组件所包含的子元素的对齐方式
  • android:layout_gravity:控制该组件在父容器里的对齐方式
    • android:layout_gravity是本(子)元素相对于父元素的对齐方式设置在子元素上.
    • android:gravity="bottom|right"是本(父)元素所有子元素的对齐方式,设置在父元素上,多个值用 | 隔开.
    • 其属性值分别为:center(整体居中)、center_vertical(垂直居中)、center_horizontal(水平居中)、right(居右)、left(居左)、bottom(底部)和top(顶部)
  • android:background:为该组件添加一个背景图片或者背景颜色,颜色常以六位的十六进制表示
  • android:layout_margin :外边距,布局或控件距离外部元素的边距
  • android:layout_padding :内边距,布局或控件距离内部元素的边距
  • android:layout_weight:权重,除了被显示占据的空间以外的的空间,然后根据权重的大小来分配空间,使用权重通常会把分配该权重方向的宽度设置为0dp,如果未设置0dp,则该控件会占据指定的宽度,然后再加上根据权重来分配的空间

三、RelativeLayout(相对布局)

第一类属性 属性值为true或者false

  • android:layout_centerHrizontal 水平居中
  • android:layout_centerVertical 垂直居中
  • android:layout_centerInparent 相对于父控件完全居中
  • android:layout_alignParentBottom 贴紧父控件的下边缘
  • android:layout_alignParentLeft 贴紧父控件的左边缘
  • android:layout_alignParentRight 贴紧父控件的右边缘
  • android:layout_alignParentTop 贴紧父控件的上边缘
  • android:layout_alignWithParentIfMissing 如果对应的兄弟控件找不到的话,就以父控件作为参照物

第二类属性 属性值必须为id的引用名“@id/id-name”

  • android:layout_below 在某控件下方

  • android:layout_above 在某控件上方

  • android:layout_toLeftOf 在某控件的左边

  • android:layout_toRightOf 在某控件的右边

  • android:layout_alignTop 本控件的上边缘和某控件的上边缘对齐

  • android:layout_alignLeft 本控件的左边缘和某控件的左边缘对齐

  • android:layout_alignBottom 本控件的下边缘和某控件的下控件对齐

  • android:layout_alignRight 本控件的右边缘和某控件的有边缘对齐

第三类:属性值为具体的像素值,如30dip,40px

  • android:layout_marginBottom 离某控件底边缘的距离

  • android:layout_marginLeft 离某控件左边缘的距离

  • android:layout_marginRight 离某控件右边缘的距离

  • android:layout_marginTop 离某控件上边缘的距离

四、GridLayout(网格布局)

Android4.0之后新加的布局管理器
能够把整个容器划分为rows*columns的网格,每个网格可以放置一个组件
可以设置一个组件横跨多少列或者纵跨多少行
当单元格大小大于组件大小时,可以通过设置layout_grativity属性值,设置组件在单元格里的位置
通过设置layout_columnWeight/layout_rowWeight属性值,可以设置各个组件的大小比例

GridLayout 使用属性

  • android:columnCount 最大列数
  • android:rowCount 最大行数
  • android:orientation GridLayout中子元素的布局方向
  • android:alignmentMode alignBounds:对齐子视图边界 alignMargins :对齐子视距内容,默认值
  • android:columnOrderPreserved 使列边界显示的顺序和列索引的顺序相同,默认是true
  • android:rowOrderPreserved 使行边界显示的顺序和行索引的顺序相同,默认是true
  • android:useDefaultMargins 没有指定视图的布局参数时使用默认的边距,默认值是false

item属性

  • android:layout_column 指定该单元格在第几列显示
  • android:layout_row 指定该单元格在第几行显示
  • android:layout_columnSpan 指定该单元格占据的列数
  • android:layout_rowSpan 指定该单元格占据的行数
  • android:layout_gravity 指定该单元格在容器中的位置
  • android:layout_columnWeight (API21加入)列权重
  • android:layout_rowWeight (API21加入) 行权重
  • android:layout_gravity 作用
    • center 不改变元素的大小,仅居中
    • center_horizontal 不改变大小,水平居中
    • center_vertical 不改变大小,垂直居中
    • top 不改变大小,置于顶部
    • left 不改变大小,置于左边
    • bottom 不改变大小,置于底部
    • right 不改变大小,置于右边
    • start 不改变大小,根据系统语言,置于开始位置
    • end 不改变大小,置于结尾
    • fill 拉伸元素控件,填满其应该所占的格子
    • fill_vertical 仅垂直方向上拉伸填充
    • fill_horizontal 仅水平方向上拉伸填充
    • clip_vertical 垂直方向上裁剪元素,仅当元素大小超过格子的空间时
    • clip_horizontal 水平方向上裁剪元素,仅当元素大小超过格子的空间时
    • 注意:使用layout_columnSpan 、layout_rowSpan时要加上layout_gravity属性,否则没有效果;另外item在边缘时宽高计算会出现错误,需要我们手动设置宽高,否则达不到想要的效果

五、TableLayout(表格布局)

继承LinearLayout
不需要明确的申明包含多少行多少列
通过添加 TableRow / 其他组件 来控制表格的行数和列数
单元格设置格式有3种:Shrinkable(可收缩),Stretchable(可拉伸),Collapsed(隐藏的)

<!--定义一个表格布局,指定第2 列可收缩,第3 列隐藏,第4列可拉伸-->
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/table01"
        android:shrinkColumns="1"
        android:collapseColumns="2"
        android:stretchColumns="3">

六、FrameLayout(帧布局)

  • 所有的控件都会默认摆放在布局的左上角
  • 使用android:layout_gravity属性来指定控件在布局中的对齐方式,这和LinearLayout中的用法是相似的。
  • FrameLayout由于定位的欠缺,导致它的应用场景也比较少,不过之后使用Fragment碎片的时候是可以使用到的。
发布了3 篇原创文章 · 获赞 0 · 访问量 67

猜你喜欢

转载自blog.csdn.net/weixin_42777389/article/details/104079879