Android布局方式介绍

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。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://www.jianshu.com/p/293c1050f8ec
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞