使用权重平均分配嵌套布局

Equally distribute Nested layouts using weights

我正在尝试平均分配 2 个 RelativeLayout,它是线性布局的子布局。
但是当 Weight = "1" and width = "0" 时。它只是缩小成一条线。
我想要的:水平平均分布
问题:它缩成一条线

     <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weightSum="2"                     <!-- here is the problem -->
            android:layout_below="@id/commentry_text_view"
            android:id="@+id/score_and_life"
            android:paddingTop="16dp"
            android:orientation="horizontal">
        <RelativeLayout
            android:layout_weight="1dp"               <!-- Here Is weight -->
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="50dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/score"
            style="@style/Header_Text"
            android:id="@+id/score_text_view"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/socreDigit"
            android:layout_marginTop="3dp"
            android:layout_marginLeft="3dp"
            style="@style/secondary_text"
            android:id="@+id/Score_Digit_Text_View"
            android:layout_toRightOf="@id/score_text_view"/>
        </RelativeLayout>

            <RelativeLayout
                android:layout_weight="1dp"                    <!-- Here Is weight -->
                 android:layout_marginLeft="150dp"
                android:layout_width="0dp"
                android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/life"
                style="@style/Header_Text"
                android:id="@+id/life_text_view"
                />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/lifeDigit"
                    android:layout_toRightOf="@id/life_text_view"
                    android:layout_marginTop="3dp"
                    android:layout_marginLeft="3dp"
                    style="@style/secondary_text"
                    android:id="@+id/Life_count_Text_view"/>
            </RelativeLayout>
        </LinearLayout>

将它们都设置为 layout_weight="1",而不是 1dp。权重值是一个分数,1dp 是以像素为单位的测量值,所以它变得混乱并将其计为零

顺便说一下,您可以删除 weightSum="2"(这意味着您的全宽权重加起来为 2),并将每个权重设置为 0.5,即宽度的 50%。哪个对你来说最有意义!

我已通过将两个相对布局的 android:layout_weight="1dp" 更改为 android:layout_weight="1" 并从两个布局中删除不必要的边距来解决您的问题。请查看下面的 XML 解决方案,解决您的问题。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="2"
    android:id="@+id/score_and_life"
    android:paddingTop="16dp"
    android:orientation="horizontal">
    <RelativeLayout
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="score"

            android:id="@+id/score_text_view"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="socreDigit"
            android:layout_marginTop="3dp"


            android:id="@+id/Score_Digit_Text_View"
            android:layout_toRightOf="@id/score_text_view"/>
    </RelativeLayout>

    <RelativeLayout
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="rfymkt,"

            android:id="@+id/life_text_view"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ejnetjn"
            android:layout_toRightOf="@id/life_text_view"
            android:layout_marginTop="3dp"
            android:layout_marginLeft="3dp"

            android:id="@+id/Life_count_Text_view"/>
    </RelativeLayout>
</LinearLayout>