2

我在垂直布局中有三个水平布局。我希望这三个水平子布局占据相同的空间,所以我为每个布局添加了权重(0.33)。

我将三个子布局组件的布局高度分配给 0dp,因为父布局是垂直的,但子布局没有像预期的那样占据相同的高度。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/paper"
    android:paddingLeft="4dp"
    android:paddingRight="8dp"
    tools:context=".TestActivity" >

         <LinearLayout
            android:id="@+id/scratchLayout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

             <LinearLayout
                android:id="@+id/topLayout"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="0.33"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp" 
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/topArea1"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@android:color/transparent"
                    android:paddingRight="3dp"
                    android:text="Top Area 2"
                    android:textSize="15dp" />

                <TextView
                    android:id="@+id/topArea2"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@android:color/transparent"
                    android:paddingRight="3dp"
                    android:text="Top Area 1"
                    android:textSize="15dp" />
             </LinearLayout>

             <LinearLayout
                android:id="@+id/centerLayout"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="0.33"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp" 
                android:orientation="horizontal" >

                 <TextView
                 android:id="@+id/centerArea1"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="3dp"
                 android:text="Center Area 1" />

                 <TextView
                 android:id="@+id/centerArea2"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="3dp"
                 android:text="Center Area 2" />

            </LinearLayout>

             <LinearLayout
                android:id="@+id/BottomLayout"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="0.33"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp" 
                android:orientation="horizontal" >

                 <TextView
                 android:id="@+id/bottomArea1"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="3dp"
                 android:text="Bottom Area 1" />

                 <TextView
                 android:id="@+id/bottomArea2"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="3dp"
                 android:text="Bottom Area 2" />

            </LinearLayout>

         </LinearLayout>

</RelativeLayout>
4

2 回答 2

3

快速说明:嵌套权重会导致性能不佳,尽可能避免。不要混用match_parentfill_parent。只需使用match_parent.

你的主要问题是你有layout_height="wrap_content"你的外层LinearLayout,但你有重量。您将每个子布局指定为总数的 1/3,然后说总数应该是其子布局的总和。每个子布局应该是 1dp 吗?100dp?如果您希望每个都占整个屏幕的 1/3,则应设置layout_height="match_parent"为外部LinearLayout.

于 2013-02-26T01:16:02.340 回答
0

我同意 Kabuko,但是请将所有的 fill_parent 更改为 match_parent。

我建议您将高度更改为 0dp,但将所有 LinearLayout 的权重设置为 1。

权重值是“因素”而不是百分比。

请参考这篇android:layout_weight 是什么意思?有关如何使用 layout_weight 的清晰示例

于 2013-02-26T01:22:33.250 回答