如何使用约束布局模拟加权LinearLayout

old*_*god 7 android android-layout android-constraintlayout

如何在LinearLayout中在Constraint Layout中平均节省空间?
例如,如果使用约束编写,下面的布局会怎样?

<LinearLayout 
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="horizontal">

  <TextView
    android:id="A"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

  <TextView
    android:id="B"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

  <TextView
    android:id="C"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

  <TextView
    android:id="D"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在约束布局中,我可以设置AD边缘,A?B?D使用33偏置和A?C?D66偏置,在每个元素之间具有相等的空间.
该解决方案并没有真正扩展.

在Constraint Layout中有没有正确的方法呢?

Nic*_*ard 18

仅供参考 - 约束布局alpha 9添加了,允许您实现此行为.

在此输入图像描述


Nic*_*ard 7

目前(约束布局alpha 6),执行此操作的唯一其他选项是使用具有百分比位置的垂直指南,然后对于每个小部件以这样的方式将它们约束到指南:左侧< - 小部件A - >指南1 < - widget B - > Guideline 2 < - widget C - >右侧

准则1为0.33,准则2为0.66.

但.

虽然它有效,但我怀疑它会比使用线性布局更快地执行此特定任务 - 如果你想要的只是这个确切的行为,只需使用线性布局(甚至在约束布局内).它为您提供约束布局的唯一优势是,您可以仅为给定轴定义此行为,另一个轴可以完全不同地约束(而对于LL,它将被对齐 - 但这是常见的需求) .

虽然我们确实计划在未来版本的约束布局中使这种特定行为更容易做,但这并不意味着不再使用所有现有布局.