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的偏移