产品部的美女提出了这样的一个需求

产品部的美女提出了这样的一个需求,看图:

c_5

AB 两控件,BA 的右侧,随着 AB 宽度的增加,B 始终在 A 的右侧,当 AB 控件的宽度之和大于父控件的宽度时,B 要求被完全显示,同时 A 被挤压。我相信大家肯定也遇到过类似的需求,并且相当不好处理,只通过布局文件,不论是使用线性布局,还是相对布局都没法实现。当初我是通过计算文本的宽度来控制父控件的左右对齐方式来实现的,并且有误差。那么ConstraintLayout又是怎么只通过布局文件去实现的呢?

代码如下:

    <Button
        android:id="@+id/bt_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
        app:layout_constrainedWidth="true" // 设置为true
        app:layout_constraintHorizontal_bias="0" // 设置水平偏好为0
        app:layout_constraintHorizontal_chainStyle="packed" //设置链样式
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/bt_2"
        app:layout_constraintTop_toTopOf="parent"/>

    <Button
        android:id="@+id/bt_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BBBBBBBBBBB"
        app:layout_constrainedWidth="true"
        app:layout_constraintLeft_toRightOf="@+id/bt_1"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

结合了以下两个属性来达到了需求的效果:

  • app:layout_constraintHorizontal_chainStyle="packed" //设置链样式
  • app:layout_constraintHorizontal_bias="0" // 设置水平偏好为0



作者:文淑
链接:https://www.jianshu.com/p/a74557359882
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/RickyXiongStrive/article/details/81605153