ConstrainLayout(约束布局)
约束布局的出现主要是为了解决试图层级嵌套过多的情况,它可以在api9以上的版本使用。从2.3开始,官方的模板默认使用ConstrainLayout。
以下是我在学习和浏览相关文章之后得出的一些心得。
1.引入依赖
使用约束布局需要引入以下依赖:
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
2.相对定位
相对于其他控件的上下左右,以及基准线进行布局
//本元素的 ?1 位置 与 目标元素 的 ?2 位置相对应
app:layout_constrain[?1]_to[?2]Of="@+id/目标元素Id"
3.角度定位
相对于其他控件的中心,以y轴为0度顺时针计算角度,配合距离进行布局。
//本元素以目标元素为圆心
app:layout_constraintCircle="@+id/目标元素Id"
//围绕圆心从y轴开始的旋转角度
app:layout_constraintCircleAngle="90"
//本元素中心距离目标元素中心的距离
app:layout_constraintCircleRadius="150dp"
4.尺寸约束
使用指定的尺寸
- wrap_content
使用wrap_content的时候可以设置最大最小的高度或者宽度:
android:minWidth 最小的宽度
android:minHeight 最小的高度
android:maxWidth 最大的宽度
android:maxHeight 最大的高度
注意!当ConstraintLayout为1.1版本以下时,使用这些属性需要加上强制约束,如下所示:
app:constrainedWidth=”true”
app:constrainedHeight=”true”
0dp (官方不建议使用match_parent,应该使用0dp配合约束达成效果) - 宽高比
当宽或高中至少有一个为0dp时,可以设置宽高比
//宽:高 = 1:1
app:layout_constraintDimensionRatio="1:1"