Установите для дочернего элемента процентную ширину родительского элемента

Есть 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>
Другие вопросы по тегам