布局
布局是指对界面结构的全面规划与安排,通过api中提供的各种布局能够快速的完成对界面的设计
使用规律不同,摆放相对位置
布局是一种固定规则的容器
常用布局
- 线性布局 LinearLayout
从上到下、从左到右排列
代码依次写
场景强烈排序意愿 - 相对布局 RelativeLayout
内部子视图与代码无关,选取参照物的方式布局 - 帧布局 FrameLayout
层次布局,堆叠布局 - 表格布局 TableLayout
向表格一样 - 网格布局 GridLayout
与表格相似 - 约束布局 ConstraintLayout
方块布置,少量代码完成复杂任务
添加布局方式
布局、空间都是view
- 利用xml 文件设计
界面设置文件 - 使用java代码添加
. 设置不满满足页面与逻辑分开
布局公有属性
android:layout_width 宽度
android:layout_height高度
android: layout_padding 内边距
android:layout_margin 外边距
线性布局 LinearLayout
案例例如:聊天窗口
线性布局常用属性:
- android: orientation 方向
- android:layout_weight 权重 占屏幕比例
- android:layout_gravity 重力 一个方向固定 调整另一个方向
0dp 与 layout_weight 搭配使用
相对布局 RelativeLayout
依靠参照物定位的布局,最灵活的布局
相对于父容器边线对其(取值:true/false):
android:layout_alignParentRight="true"
android:layout_centerHorizontal
相对于其他控件(取值:其他控件id):
android:layout_toRightOf="@id/name"
对照参考:在参照物的哪一边和那个参照物对齐
帧布局 FrameLayout
属性:
android:layout_gravity(控件重力)
android:foreground(前景)
android:foregroundGravity(前景重力)
表格布局 TableLayout
以行列方式显示控件
属性
如果直接在其中添加控件,控件将和父容器等宽,如果想让控件处于同一行需要在同一行控件外加上<TableRow></TableRow>
android:stretchColumns 对应索引列,设置可以伸展,参数时所有列0,1
android:shrinkColumns 对应索引列,设置可以收缩,参数时所有列0,1
android:collapseColumns 设置隐藏的列
网格布局 GirdLayout
于表格布局区别:能够定义好有多少行多少列
rowConut(行数量)
columnCount(列数量)
layout_row(位于第几行)
layout_column(位于第几列)
layout_rowSpan(跨几行)
layout_columnSpan(跨几列)
layout_gravity="fill" 效果填充
约束布局 ConstraintLayout
特点:
- 编写方式(编写界面可以通过拖拽控件方式完成)
- 解决布局嵌套过多的问题
通过使用约束的方式指定空间间的关系
重要属性:
app:layout_constraintTop_toBottomOf 约束当前view的底部位置 Top代表当前空间的位置 属性值是其他控件的id
android:layout_marginTop="40dp" 两个边线之间的距离
app:layout_constraintHorizontal_bias="0.064" 水平偏移量 取值0-1
app:layout_constraintVertical_bias="0.164" 垂直偏移量 取值 0-1
界面设计分为预览和蓝图
步骤:
控件拖拽
约束添加
基本操作
- 添加约束 原点箭头 一个控件需要有垂直约束与水平约束才可以正常使用
app:layout_constraintTop_toTopOf="parent"
第一个top 是本容器的约束边线
第二个top 是参照空间的边线
android:layout_marginTop="40dp"
app:layout_constraintHorizontal_bias="0.064" 水平偏移量
app:layout_constraintVertical_bias="0.164" 垂直偏移量
偏移量可已脱离边线距离控制控件位置,整个容器宽高按照100%控制 默认取值0.5
inspector的认识
属性区域的设置
- layout 控制大小与约束距离
自动添加操作
Tum On Autoconnect 打开自动连接
Guidelines
参考线,一种可以隐藏的控件,设置对称效果时使用
重要属性
android:orientation="vertical" 方向
app:layout_constraintGuide_percent="0.5" 比例
网格效果也可以通过基线画出网格,控件约束与基线