目录
尺寸约束
自身约束
尺寸类型
类型 | 说明 |
---|---|
固定值 | 如android:width="200dp" |
wrap_content | 按内容自适应 |
MATCH_CONSTRAINT | 宽高0dp ,任由约束拉伸 |
宽高比
在宽或高为MATCH_CONSTRAINT
的情况下,保持宽高比:app:layout_constraintDimensionRatio
值类型 | 说明 |
---|---|
w:h | 宽高只有一个为MATCH_CONSTRAINT ,按比例式约束另一个 |
x.xx | 宽高只有一个为MATCH_CONSTRAINT ,按比例值约束另一个 |
W,1:1 | 宽高均为0 时先约束高度,再用比值约束宽度 |
H,1:1 | 宽高均为0 时先约束宽度,再用比值约束高度 |
参照约束
百分比
- 相关尺寸约束(水平为宽,垂直为高)设置为
MATCH_CONSTRAINT
- 启用按父布局百分比约束
app:layout_constraintWidth_default="percent"
app:layout_constraintHeight_default="percent"
- 设置百分比值([0~1])
app:layout_constraintWidth_percent="0.5"
app:layout_constraintHeight_percent="1"
权重链
- View彼此约束位置连接成链
- 相关尺寸(水平为宽,垂直为高)设置为
MATCH_CONSTRAINT
- 设置权重
app:layout_constraintHorizontal_weight=“1.2”
app:layout_constraintVertical_weight=“2.4”
位置约束
相对位置
设置方向力:app:layout_constraint{自身方向}_to{参照物方向}Of="{参照物}"
其中参照物:parent
,其他View
,GuideLine
位置偏向
默认居中(0.5),相当于设置left
或top
在父容器的初始位置
layout_constraintHorizontal_bias="0.2"
layout_constraintVertical_bias="0.8"
辅助线
GuideLine:只辅助约束,不参与渲染
<android.support.constraint.Guideline
android:id="@+id/guideline_h"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
辅助线 | 说明 |
---|---|
辅助线类型 | 水平horizontal ,垂直vertical |
固定位置 | app:layout_constraintGuide_begin=“10dp” app:layout_constraintGuide_end=“50dp” |
百分比位置 | app:layout_constraintGuide_percent=”0.5” |
链约束
定义链:View两两相依连接成链
声明类型: 链头控制整条链的类型
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintVertical_chainStyle="packed"
链类型 | 实现方式 | 样式 |
---|---|---|
散布式(Spread默认) | 相关尺寸不为0 | 空白均匀散布在View周边 |
内散式(Spread Inside) | 相关尺寸不为0 | 空白均匀散布在View之间 |
外散式(Packed) | 相关尺寸不为0 | 空白均匀散布在View两端 |
外散偏向 | 相关尺寸不为0 链头View设置偏向 | 空白不均匀散在View两端 |
权重链 | 链中View设置权重 | 不散布空白 |
总结
- View尺寸可以是
固定值
,也可以由自身约束
(wrap_content
,宽高比),也可以根据父容器约束
(百分比,权重) - 约束可以理解为一种方向上的拉扯力,这种拉扯力可以拉扯位置,也可以在View的尺寸为
MATCH_CONSTRAINT
拉伸View的大小; - 拉扯力有四个方向,着力点可以是View的边也可以是辅助线,两端都固定在着力点上;
- 拉扯力道默认相当,可以通过偏向控制其拉扯位置时候的力的力道