Чтобы использовать веса с ConstraintLayout
, вы должны убедиться, что все виды, которые вы хотите, взвешены, образуют цепочку .В этом случае мы будем иметь дело с горизонтальной цепочкой , что означает, что начало + конец (или левый + правый) каждого представления должны быть ограничены его соседями или родителем.
Например:
<View
android:id="@+id/first"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/second"
.../>
<View
android:id="@+id/second"
app:layout_constraintStart_toEndOf="@id/first"
app:layout_constraintEnd_toStartOf="@id/third"
.../>
<View
android:id="@+id/third"
app:layout_constraintStart_toEndOf="@id/second"
app:layout_constraintEnd_toEndOf="parent"
.../>
Если вы хотите, чтобы представления распределялись равномерно, то вы должны использовать MATCH_CONSTRAINTS
(0dp
) для ширины каждого вида:
<View
android:id="@+id/first"
android:layout_width="0dp"
.../>
<View
android:id="@+id/second"
android:layout_width="0dp"
.../>
<View
android:id="@+id/third"
android:layout_width="0dp"
.../>
Если вы хотите изменить способ взвешивания видов, вы должны указать вес для каждого вида (в дополнение к установке ширины 0dp
).Здесь средний вид будет в два раза больше двух боковых:
<View
android:id="@+id/first"
app:layout_constraintHorizontal_weight="1"
.../>
<View
android:id="@+id/second"
app:layout_constraintHorizontal_weight="2"
.../>
<View
android:id="@+id/third"
app:layout_constraintHorizontal_weight="1"
.../>