Reference
Relative positioning
属性 | 说明 |
---|---|
app:layout_constraintLeft_toLeftOf | 该控件以xx控件的左端为左端 |
app:layout_constraintLeft_toRightOf | 该控件以xx控件的右端为左端 |
app:layout_constraintRight_toLeftOf | 该控件以xx控件的左端为右端 |
app:layout_constraintRight_toRightOf | 该控件以xx控件的右端为右端 |
app:layout_constraintTop_toTopOf | 该控件以xx控件的上端为上端 |
app:layout_constraintTop_toBottomOf | 该控件以xx控件的下端为上端 |
app:layout_constraintBottom_toTopOf | 该控件以xx控件的上端为下端 |
app:layout_constraintBottom_toBottomOf | 该控件以xx控件的下端为下端 |
app:layout_constraintBaseline_toBaselineOf | 该控件以xx控件的基线端为基线端 |
app:layout_constraintStart_toEndOf | 该控件以xx控件的结束端为开始端 |
app:layout_constraintStart_toStartOf | 该控件以xx控件的开始端为开始端 |
app:layout_constraintEnd_toStartOf | 该控件以xx控件的开始端为结束端 |
app:layout_constraintEnd_toEndOf | 该控件以xx控件的结束端为结束端 |
1、以app:layout_constraintLeft_toRightOf
为例
布局
|
|
效果
app:layout_constraintBaseline_toBaselineOf
简单理解为BTN_A
和BTN_B
文字的底端对齐,布局修改后效果
Margins
属性 | 说明 |
---|---|
android:layout_marginStart | 该控件距开始端控件的间距(设置了app:layout_constraintStart_toStartOf 或app:layout_constraintLeft_toLeftOf 后有效) |
android:layout_marginEnd | 该控件距结束端控件的间距(设置了app:layout_constraintEnd_toEndOf 或app:layout_constraintRight_toRightOf 后有效) |
android:layout_marginLeft | 该控件距左端控件的间距(设置了app:layout_constraintStart_toStartOf 或app:layout_constraintLeft_toLeftOf 后有效) |
android:layout_marginTop | 该控件距上端控件的间距(设置了app:layout_constraintTop_toTopOf 后有效) |
android:layout_marginRight | 该控件距右端控件的间距(设置了app:layout_constraintEnd_toEndOf 或app:layout_constraintRight_toRightOf 后有效) |
android:layout_marginBottom | 该控件距下端控件的间距(设置了app:layout_constraintBottom_toBottomOf 后有效) |
app:layout_goneMarginStart | 当开始端控件的可见性为View.GONE 时,该控件距开始端控件的间距 |
app:layout_goneMarginEnd | 当结束端控件的可见性为View.GONE 时,该控件距结束端控件的间距 |
app:layout_goneMarginLeft | 当左端控件的可见性为View.GONE 时,该控件距左端控件的间距 |
app:layout_goneMarginTop | 当上端控件的可见性为View.GONE 时,该控件距上端控件的间距 |
app:layout_goneMarginRight | 当右端控件的可见性为View.GONE 时,该控件距右端控件的间距 |
app:layout_goneMarginBottom | 当下端控件的可见性为View.GONE 时,该控件距下端控件的间距 |
1、以app:layout_goneMarginLeft
为例
布局
|
|
效果
Centering positioning
属性 | 说明 |
---|---|
app:layout_constraintHorizontal_bias | 该控件水平方向占位占父控件的百分比(从左端开始计算) |
app:layout_constraintVertical_bias | 该控件垂直方向占位占父控件的百分比(从上端开始计算) |
1、以app:layout_constraintHorizontal_bias
为例
(1)当百分比为0
时
布局
|
|
效果
(2)当百分比为100
时,修改布局参数值为1
,效果
(3)当百分比为30
时,修改布局参数值为0.3
,效果
Circular positioning
属性 | 说明 |
---|---|
app:layout_constraintCircle | 该控件所围绕的“圆心”控件 |
app:layout_constraintCircleRadius | 圆的半径 |
app:layout_constraintCircleAngle | 旋转角度 |
布局
|
|
效果
Visibility behavior
控件的 margin 属于控件自身,当控件可见性为View.GONE
时,其 margin 也会失效,所以在计算layout_goneMarginLeft
等时,需要加上该值
Dimension constraints
属性 | 说明 |
---|---|
android:layout_width | 该控件的宽度 |
android:layout_height | 该控件的高度 |
android:minWidth | 该控件的最小宽度(设置了android:layout_width="wrap_content" 后有效) |
android:minHeight | 该控件的最小高度(设置了android:layout_height="wrap_content" 后有效) |
android:maxWidth | 该控件的最大宽度(设置了android:layout_width="wrap_content" 后有效) |
android:maxHeight | 该控件的最大高度(设置了android:layout_height="wrap_content" 后有效) |
app:layout_constraintDimensionRatio | 该控件的宽高之比(需要宽、高至少一个是0dp ) |
app:layout_constrainedWidth | keep enforcing constraints to limit the resulting dimension |
app:layout_constrainedHeight | keep enforcing constraints to limit the resulting dimension |
app:layout_constraintWidth_min | 该控件的最小宽度(设置了android:layout_width="0dp" 后有效) |
app:layout_constraintHeight_min | 该控件的最小高度(设置了android:layout_height="0dp" 后有效) |
app:layout_constraintWidth_max | 该控件的最大宽度(设置了android:layout_width="0dp" 后有效) |
app:layout_constraintHeight_max | 该控件的最大高度(设置了android:layout_height="0dp" 后有效) |
app:layout_constraintWidth_percent | 该控件相对于父控件水平方向的比例 |
app:layout_constraintHeight_percent | 该控件相对于父控件垂直方向的比例 |
1、android:layout_width
和android:layout_height
取不同值时的效果
布局
|
|
效果
2、以android:minHeight
为例
布局
|
|
效果
3、app:layout_constraintDimensionRatio
只有一个方向是0dp
布局
|
|
效果
4、app:layout_constraintDimensionRatio
两个方向都是0dp
,可以使用W
或H
指定方向
布局
|
|
效果
5、以app:layout_constraintWidth_percent
为例
布局
|
|
效果
Chains
控件之间互相引用可以成为 chain
属性 | 说明 |
---|---|
app:layout_constraintHorizontal_chainStyle | 水平方向 chain 的样式(默认是spread ) |
app:layout_constraintVertical_chainStyle | 垂直方向 chain 的样式(默认是spread ) |
app:layout_constraintHorizontal_weight | 该控件水平方向权重(设置了android:layout_width="0dp" 后有效) |
app:layout_constraintVertical_weight | 该控件垂直方向权重(设置了android:layout_height="0dp" 后有效) |
1、chain 的样式
2、构成 chain 的布局
布局
|
|
效果
3、布局去掉app:layout_constraintRight_toLeftOf="@+id/btn_B"
即不能构成 chain,效果