ConstraintLayout 新特性
1 基线对其 layout_constraintBaseline_toBaselineOf
<TextView
android:id="@+id/btn1"
android:text="按钮1"
android:textSize="26sp"/>
<TextView
android:id="@+id/btn2"
android:text="按钮2"
app:layout_constraintBaseline_toBaselineOf="@+id/btn1"
app:layout_constraintLeft_toRightOf="@+id/btn1"/>
基线
与非基线
2 与父布局 对其
app:layout_constraintBottom_toBottomOf="parent" 我的底部与父亲底部对齐
app:layout_constraintTop_toTopOf="parent" 我的顶部与父亲的顶部对齐
app:layout_constraintLeft_toLeftOf="parent" 我的左侧与父亲的左侧对齐
app:layout_constraintRight_toRightOf="parent" 我的右侧与父亲的右侧对齐
3 居中
就是在某两个对称方向上,给予拉力(约束)
这是垂直居中
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
复制代码位于父亲的正中央
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
4 Bias 偏向某一边
改变两边拉力 比例
layout_constraintHorizontal_bias 水平约束力
layout_constraintVertical_bias 垂直约束力
<Button
android:text="按钮1"
app:layout_constraintHorizontal_bias="0.3"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<Button
android:text="按钮1"
app:layout_constraintHorizontal_bias="0.3"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
5 Circular positioning (圆形的定位)
看下图:
layout_constraintCircle :引用另一个小部件ID
layout_constraintCircleRadius :到其他小部件中心的距离
layout_constraintCircleAngle :小部件应该处于哪个角度(以度为单位,从0到360)
<Button
android:id="@+id/btn1"
android:text="按钮1"/>
<Button
android:text="按钮2"
app:layout_constraintCircle="@+id/btn1"
app:layout_constraintCircleRadius="100dp"
app:layout_constraintCircleAngle="145"/>
6 Visibility behavior 可见性行为
当设置 View 为 ‘visibility = gone’,会在原地留一个点,作为相关view 的参照物。
7 Dimensions constraints 尺寸限制
在ConstraintLayout中,可以给一个view设置最小和最大尺寸.
属性如下(这些属性只有在给出的宽度或高度为wrap_content时才会生效):
android:minWidth 设置布局的最小宽度
android:minHeight 设置布局的最小高度
android:maxWidth 设置布局的最大宽度
android:maxHeight 设置布局的最大高度
8 Widgets dimension constraints 宽高约束
话不多说,看代码看图
<Button
android:id="@+id/btn1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="按钮1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<Button
android:id="@+id/btn2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="按钮2"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn1"/>
<Button
android:id="@+id/btn3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="60dp"
android:text="按钮3"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn2"/>
9 WRAP_CONTENT:强制约束(在1.1中添加)
view 在特别宽的时候,不出现预期以外的效果,这是可以加上下面代码。
app:layout_constrainedWidth=”true|false”
app:layout_constrainedHeight=”true|false”
10 MATCH_CONSTRAINT尺寸(在1.1中添加) —很实用
当一个view的长宽设置为MATCH_CONSTRAINT(即0dp)时,默认是使该view占用所有的可用的空间. 这里有几个额外的属性
layout_constraintWidth_min和layout_constraintHeight_min:将设置此维度的最小大小
layout_constraintWidth_max和layout_constraintHeight_max:将设置此维度的最大大小
layout_constraintWidth_percent和layout_constraintHeight_percent:将此维度的大小设置为父级的百分比
- 百分比布局是必须和MATCH_PARENT(0dp)一起使用
- layout_constraintWidth_percent 或layout_constraintHeight_percent属性设置为0到1之间的值
11 按比例设置宽高(Ratio) —很实用
可以设置View的宽高比例,需要将至少一个约束维度设置为0dp(即MATCH_CONSTRAINT),再设置layout_constraintDimensionRatio
12 Chains(链)
在上篇文章里有
优化Android 布局 —— ConstraintLayout
13 还有一些 虚拟视图,辅助配置的。
用了一段时间的 ConstraintLayout 发现还是很实用的,还没有用的小伙伴赶快用起来吧
。