ConstraintLayout—新特性

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_CONSTRAINT(0dp)一起使用
  • layout_constraintWidth_percent 或layout_constraintHeight_percent属性设置为0到1之间的值
11 按比例设置宽高(Ratio) —很实用

可以设置View的宽高比例,需要将至少一个约束维度设置为0dp(即MATCH_CONSTRAINT),再设置layout_constraintDimensionRatio

12 Chains(链)

在上片文章里有

13 还有一些 虚拟视图,辅助配置的。

用了一段时间的 ConstraintLayout 发现还是很实用的,还没有用的小伙伴赶快用起来吧

发布了26 篇原创文章 · 获赞 6 · 访问量 7784

猜你喜欢

转载自blog.csdn.net/weixin_37558974/article/details/88892261