ConstraintLayout 知识点整理
概述
- 每个
View
在 水平 和 竖直 方向都需至少一个约束 - 未定义约束的
View
默认在左上角 (0,0) 进行绘制 - 布局文件
Design Tab
的Component Tree
中右击 layout 可将原 layout 快速转换为ConstraintLayout
布局
约束类型详解
- 父布局位置: 约束
View
至父布局相应边界 - 位置顺序: 定义两个
View
的显示顺序,如定义BView
永远在AView
右边 - 对齐: 定义两个
View
边缘对齐 - 基线对齐: 定义两个
View
的文本基线对齐 - 约束辅线: 定义一条水平/竖直方向上的不可见辅助线,
View
可基于该辅助线定义约束,辅助线可通过百分比或固定值来定义其在水平/竖直方向上的位置
约束偏移
- 如果一个
View
的相对两边均定义了约束,且为相同类型(均为固定值或均为自适应),则View
两侧的默认约束偏移为 50%,你可以通过调整约束偏移来进一步调整View
的位置
视图尺寸约束
- 高宽计量方式
- Wrap Content:
View
将拉伸至足够包裹内容 - Match Constraints:
View
将拉伸至约束边缘 - Fixed: 固定值
- Wrap Content:
- 比例约束: 在
View
的高/宽中某一项为match constraints
(0dp) 时,可以为View
设置高宽比约束
控制链式布局
- 当一组
View
中的任何一个都跟同组中的另一View
处于双向约束时(水平或竖直方向),可为该组View
设置以下几种分布方式:- Spread: 均匀分布
- Spread inside: 首位被固定在链的两端,其他均匀分布
- Weighted: 类似
LinearLayout
中的weight
,在ConstraintLayout
中的属性为layout_constraintHorizontal_weight
,layout_constraintVertical_weight
- Packed: 组内所有
View
被打包在一起视作一个View
,这时你可以通过为链首的View
设置偏移来设置打包View
的偏移