Установите для дочернего элемента процентную ширину родительского элемента
Есть 3 контейнера с
horizontal
ориентация. У первых двоих по 4 ребенка. У третьего всего 3. Я создал и назначил стиль всем детям. Фрагмент стиля:
<item name="android:layout_width">0dp</item>
<item name="android:layout_weight">.25</item>
В этом стиле первые две строки хорошо выровнены, и каждый дочерний элемент использует четверть ширины родительского элемента. Однако компоненты в третьем
LinearLayout
каждая использует треть ширины родителей.
Итак, выравнивание компонентов выглядит так:
A1xxxx A2xxxx A3xxxx A4xxxx
B1xxxx B2xxxx B3xxxx B4xxxx
C1xxxx C2xxxx C3xxxx
И не так (как и ожидалось):
A1xxxx A2xxxx A3xxxx A4xxxx
B1xxxx B2xxxx B3xxxx B4xxxx
C1xxxx C2xxxx C3xxxx
Решение: я пробовал вручную изменить
android:layout_weight
свойство для каждого дочернего элемента в третьей строке, и если я установил
layout_weight
из
C1
,
C2
а также
C3
к
0.25
а также
0.5
Получаю желаемый расклад.
Вопрос: Я делаю что-то не так, поскольку в моем первоначальном решении каждый
TextView
иметь собственность
<item name="android:layout_weight">.25</item>
не работает как положено?
2 ответа
Вы не делаете ничего плохого и ожидаемый результат.
Вам просто нужно добавить 1 к третьему LinearLayout. Потому что по умолчанию значение
android:weightSum
устанавливается на сумму детских
layout_weight
Попробуй это...
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text="xhajxnuwxnu"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
/>
</LinearLayout>
</LinearLayout>