美文网首页Android Zone
Android布局方式介绍

Android布局方式介绍

作者: 翻译不了的声响 | 来源:发表于2018-04-19 14:56 被阅读0次

    Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。Android的布局分为基本布局和新型布局七种布局方式,下面一起来看看这些布局方式。

    布局类型图

    Android七大界面布局方式包括: LinearLayout(线性布局)FrameLayout(框架布局)TableLayout(表格布局)RelativeLayout(相对布局)AbsoluteLayout(绝对布局)GridLayout(网格布局)ConstraintLayout(约束布局)

    1. LinearLayout(线性布局)

    LinearLayout 按照垂直或者水平的顺序依次排列子元素(通过android:orientation属性来控制),每一个子元素都位于前一个元素之后。

    属性 说明
    orientation 设置布局排列方式 (horizontal/vertical)
    layout_weight 设置所占布局的权重
    weightSum 设置最大权重和
    divider 设置分割线(color无效)
    showDividers 设置分割线位置 (none/begining/end/middle)
    dividerPadding 设置分割线内边距
    baselineAligned 设置子控件文字基线是否对齐
    baselineAlignedChildIndex 设置文字基线对齐的子控件(初始值为0)
    2. RelativeLayout(相对布局)

    RelativeLayout 按照控件之间相对位置或相对父容器位置进行排列布局。

    • 相对于父控件属性
    属性 说明
    layout_alignParentBottom 将控件底端与父控件的底端对齐
    layout_alignParentLeft 将控件左端与父控件的左端对齐
    layout_alignParentRight 将控件右端与父控件的右端对齐
    layout_alignParentTop 将控件上端与父控件的上端对齐
    layout_alignParentStart 将控件开始位置与父控件的开始位置对齐
    layout_alignParentEnd 将控件结束位置与父控件的结束位置对齐
    layout_centerHorizontal 将控件位于父控件的水平方向中间位置
    layout_centerVertical 将控件位于父控件的垂直方向中间位置
    layout_centerInParent 将控件位于父控件的水平和垂直方向中间位置
    • 相对于指定控件属性
    属性 说明
    layout_above 将控件位于指定id控件的上方
    layout_below 将控件位于指定id控件的下方
    layout_toLeftOf 将控件位于指定id控件的左边
    layout_toRightOf 将控件位于指定id控件的右边
    layout_alignBottom 将前控件与指定id控件的下边缘对齐
    layout_alignLeft 将控件与指定id控件的左边缘对齐
    layout_alignRight 将控件与指定id控件的右边缘对齐
    layout_alignTop 将控件与指定id控件的上边缘对齐
    layout_alignStart 将控件与指定id控件的开始位置对齐
    layout_toStartOf 将控件位于指定id控件的开始位置
    layout_alignEnd 将控件与指定id控件的结束位置对齐
    layout_toEndOf 将控件位于指定id控件的结束位置
    layout_alignBaseline 将控件的基线与指定id控件t的基线对齐
    3. TableLayout(表格布局)

    Tablelayout 以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。有多少个子控件就有多少列;当为View时,该View将独占一行。

    属性 说明
    collapseColumns 设置要隐藏的列
    shrinkColumns 设置要收缩的列
    stretchColumns 设置可拉伸的列
    layout_column 设置单元格显示列
    layout_span 设置单元格占据列
    4. FrameLayout(框架布局)

    FrameLayout 整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。

    5. AbsoluteLayout(绝对布局)

    AbsoluteLayout布局已经被废弃,不推荐使用,多用于指定屏幕的设备,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。

    属性 说明
    layour_x 设置控件的x坐标
    layour_y 设置控件的y坐标
    6. GridLayout(网格布局)

    GridLayout 是Android4.0增加的网格布局控件,与之前的TableLayout有些相似,它把整个容器划分为rows × columns个网格,每个网格可以放置一个组件。性能及功能都要比Tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比Tablelayout要快。

    • 本身属性
    属性 说明
    rowCount 设置最大行数
    columnCount 设置最大列数
    • 子元素属性
    属性 说明
    layout_row 设置子控件的行数
    layout_column 设置子控件的列数
    layout_rowSpan 设置控件所占的列数
    layout_columnSpan 设置控件所占的列数
    layout_rowWeight 设置控件的行权重
    layout_columnWeight 设置控件的列权重
    7. ConstraintLayout(约束布局)

    Constraint Layout 是Android Studio 2.2中主要的新增功能之一,也是Google在2016年的Google I/O大会上提出的一个可以灵活控制子控件的位置和大小的新布局。它可以有效地解决布局嵌套过多的问题。我们平时编写界面,复杂的布局总会伴随着多层的嵌套,而嵌套越多,程序的性能也就越差。ConstraintLayout则是使用约束的方式来指定各个控件的位置和关系的,它有点类似于RelativeLayout,但远比RelativeLayout要更强大。

    属性 说明
    layout_constraintLeft_toLeftOf 该控件的左边相对于某控件或父布局的左边对齐
    layout_constraintLeft_toRightOf 该控件的左边相对于某控件或父布局的右边对齐
    layout_constraintRight_toLeftOf 该控件的右边相对于某控件或父布局的左边对齐
    layout_constraintRight_toRightOf 该控件的右边相对于某控件或父布局的右边对齐
    layout_constraintTop_toTopOf 该控件的顶边相对于某控件或父布局的顶边对齐
    layout_constraintTop_toBottomOf 该控件的顶边相对于某控件或父布局的底边对齐
    layout_constraintBottom_toTopOf 该控件的底边相对于某控件或父布局的顶边对齐
    layout_constraintBottom_toBottomOf 该控件的底边相对于某控件或父布局的底边对齐
    layout_constraintStart_toStartOf 该控件的开始部分相对于某控件或父布局的开始部分对齐
    layout_constraintStart_toEndOf 该控件的开始部分相对于某控件或父布局的结束部分对齐
    layout_constraintEnd_toStartOf 该控件的结束部分相对于某控件或父布局的开始部分对齐
    layout_constraintEnd_toEndOf 该控件的结束部分相对于某控件或父布局的结束部分对齐
    layout_constraintBaseline_toBaselineOf 该控件的水平基准线相对于某控件或父布局的水平基准线对齐
    参考

    官方文档
    https://developer.android.google.cn/reference/android/widget
    https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout

    相关文章

      网友评论

        本文标题:Android布局方式介绍

        本文链接:https://www.haomeiwen.com/subject/ovfbkftx.html