ConstraintLayout布局使用方法

填充

⽔平⽅向填充⽗容器(通过 match_constraint )

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintEnd_toEndOf="parent"

android:layout_width="0dp"

备注:在早期版本中 match_parent 没有效果。

权重

为⽔平⽅向的控件设置权重,⼤⼩为 2:1:1 。

android:layout_width="0dp"

app:layout_constraintHorizontal_weight="2"

android:layout_width="0dp"

app:layout_constraintHorizontal_weight="1"

android:layout_width="0dp"

app:layout_constraintHorizontal_weight="1"

⽂字基准线对⻬app:layout_constraintBaseline_toBaselineOf

圆形定位

通过「圆⼼」「⻆度」「半径」设置圆形定位

app:layout_constraintCircle="@id/view"

app:layout_constraintCircleAngle="90"

app:layout_constraintCircleRadius="180dp"

特殊属性

约束限制

限制控件⼤⼩不会超过约束范围。

app:layout_constrainedWidth="true"

app:layout_constrainedHeight="true

偏向

控制控件在垂直⽅向的 30%的位置

app:layout_constraintTop_toBottomOf="parent"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintVertical_bias="0.3"

除了配合百分⽐定位,还有⽤于配合有时在「约束限制」的条件下不需要居中效果的情况

垂直⽅向居顶部app:layout_constraintTop_toBottomOf="parent"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constrainedHeight="true"

app:layout_constraintVertical_bias="0.0"

约束链

在约束链上的第⼀个控件上加上 chainStyle ,⽤来改变⼀组控件的布局⽅式

packed(打包) spread (扩散) spread_inside(内部扩散)

垂直⽅向 packed

app:layout_constraintVertical_chainStyle="packed"

宽⾼⽐

⾄少需要⼀个⽅向的值为 match_constraint,默认的都是「宽⾼⽐」,然后根据另外⼀条边和⽐例算出match_constraint 的值,x:y 默认表示的都是 width:height

宽是 0dp,⾼是 100dp,ratio 是 2:1

默认情况下是宽是 200dp,但是我们可以指定被约束的边是 height,那么宽度就是50 dp

⾼是 0dp,宽是 100 dp,ratio 是 2:1

默认情况下是⾼是 50 dp,但是我们指定被约束的边是 width,那么⾼度为200dp

百分⽐布局百分⽐布局

需要对应⽅向上的值为 match_constraint,百分⽐是 parent 的百分⽐,⽽不是约束区域的百分⽐宽度是⽗容器的 30%

android:layout_width="0dp"

app:layout_constraintWidth_percent="0.3"

辅助控件

GuideLine

设置辅助线的⽅向 android:orientation="vertical"

设置辅助线的位置,根据⽅向不同

距离左侧或上侧的距离 layout_constraintGuide_begin

距离右侧或下侧的距离 layout_constraintGuide_end

百分⽐ layout_constraintGuide_percent

Group

通过 constraint_referenced_ids 使⽤引⽤的⽅式来避免布局嵌套。

可以为⼀组控件统⼀设置 setVisibility

只有设置可⻅度的功能,不要指望这个来通知设置点击事件...

Layer

和 Group 类似,同样通过引⽤的⽅式来避免布局嵌套,可以为⼀组控件统⼀设置旋

转/缩放/ 位移。Barrier

通过设置⼀组控件的某个⽅向的屏障,来 避免布局嵌套 。

Placeholder

通过 setContentId 来将指定控件放到占位符的位置。

Flow

通过引⽤的⽅式来避免布局嵌套。

wrapMode.  chain.  aligned. none(默认)

注意这个控件是可以被测量的,所以对应⽅向上的值可能需要被确定(即不能只约束同⼀⽅ 向的单个约束)

ConstraintSet

使⽤ ConstraintSet 对象来动态修改布局。

防⽌布局中有⽆ id 控件时报错,需要设置 isForceId = false

通过 ConstraintSet#clone 来从 xml 布局中获取约束集。

布局扁平化更加容易做过渡动画

你可能感兴趣的:(ConstraintLayout布局使用方法)