关于ConstraintLayout的介绍官方文档给出了如下解释:
ConstraintLayout
allows you to create large and complex layouts with a flat view hierarchy (no nested view groups). It's similar to RelativeLayout
in that all views are laid out according to relationships between sibling views and the parent layout, but it's more flexible than RelativeLayout
and easier to use with Android Studio's Layout Editor.
大致意思就是:ConstraintLayout允许您使用平面视图层次结构创建大型复杂布局(无嵌套视图组)。 它与RelativeLayout类似,因为所有视图都根据兄弟视图和父布局之间的关系进行布局,但它比RelativeLayout更灵活,更易于与Android Studio的布局编辑器一起使用。说白了就是它的出现就是解决布局嵌套层次出现的一种高级布局,并且现在ConstraintLayout也是AndroidStudio默认生成的布局。
下面就是介绍它的一些属性:
app:layout_constraintStart_toStartOf="parent或者@+id/控件id" 当前控件的开始位置相对于另一个控件的开始位置,同理下面也是同样不在重复介绍
app:layout_constraintStart_toEndOf="parent或者@+id/控件id"
app:layout_constraintTop_toTopOf="parent或者@+id/控件id"
app:layout_constraintTop_toBottomOf="parent或者@+id/控件id"
app:layout_constraintEnd_toEndOf="parent或者@+id/控件id"
app:layout_constraintEnd_toStartOf="parent或者@+id/控件id"
app:layout_constraintBottom_toBottomOf="parent或者@+id/控件id"
app:layout_constraintBottom_toTopOf="parent或者@+id/控件id"
⽔水平⽅方向居中:
app:layout_constraintStart_toStartOf="@+id/控件id"
app:layout_constraintEnd_toEndOf="@+id/控件id"
垂直⽅方向居中:
app:layout_constraintTop_toTopOf="@+id/控件id"
app:layout_constraintBottom_toBottomOf="@+id/控件id"
控件垂直居中于 view 的下边:
app:layout_constraintTop_toBottomOf="@+id/控件id"
app:layout_constraintBottom_toBottomOf="@+id/控件id"
权重设置
例如水平向的控件设置权重,⼤大⼩小为 2:1:1 :
首先各个自 view需要在水平方向上穿起来,一个连接一个然后
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="@+id/控件id"
圆形定位功能:
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_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="0.3"
约束链
在约束链上的第⼀一个控件上加上 chainStyle ,⽤用来改变⼀一组控件的布局⽅方式
packed(打包)
spread (扩散) 默认样式
spread_inside(内部扩散)
垂直⽅方向 packed:
app:layout_constraintVertical_chainStyle="packed"
百分⽐比布局
需要对应⽅方向上的值为 match_constraint(0)
百分⽐比是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 位置是相对于父容器
Barrier
通过设置⼀一组控件的某个⽅方向的屏障,不让越界,用来避免布局嵌套。
app:barrierDirection="end"//屏障的方向(一共六个start,end,left,right,top,bottom)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="id1,id2"
Placeholder占位符
通过 setContentId 来将指定控件放到占位符的位置,通过加上 TransitionManager 来⾃自动完成过渡动画。TransitionManager.beginDelayedTransition(父容器)
Group
通过 constraint_referenced_ids 使⽤用引⽤用的⽅方式来避免布局嵌套。
可以为⼀一组控件统⼀一设置 setVisibility
网友评论