Вопрос:

LinearLayout Weight работает неправильно

android android-layout android-linearlayout android-layout-weight

48 просмотра

1 ответ

66 Репутация автора

Эй, я создал LinearLayout с 2 RelativeLayout в нем. Один RelativeLayout имеет вес 8, а другой вес 2. Когда я запускаю мое приложение, макет, который должен использовать 80% экрана, занимает 20% экрана, а другой RelativeLayout, который должен использовать 20% экрана, занимает 80%. % экрана.

Вот мой код:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/colorPrimary"
    android:layout_weight="8">
</RelativeLayout>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:layout_weight="2">
</RelativeLayout>
</LinearLayout>
Автор: M. Berg Источник Размещён: 27.12.2017 10:05

Ответы (1)


1 плюс

289 Репутация автора

Решение

При использовании весовых коэффициентов в LinearLayout вы должны позаботиться о weightSumзначении. По умолчанию это 1, и layout_weightвы можете иметь значения с плавающей запятой, если вам это нужно. Дети должны указать layout_weightзначение, и layout_widthили layout_heightдолжно быть 0dp, в зависимости от ориентации родителя. Немного странно, что вы не исправили это самостоятельно, потому что Android Studio автоматически предупреждает вас. Во всяком случае, ниже вы найдете фиксированный макет. Дайте мне знать, если это работает для вас.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="10"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/colorPrimary"
        android:layout_weight="8">
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="#FFFFFF"
        android:layout_weight="2">
    </RelativeLayout>

</LinearLayout>

Кроме того , я заменил fill_parentс match_parent, потому что если вы использовали его, это означает , что вы разрабатываете для уровня API 8+, поэтому вы должны использовать «match_parent» (он был заменен, но значение остается тем же самым «-1»).

Автор: FonzTech Размещён: 27.12.2017 10:15
Вопросы из категории :
32x32