我在垂直布局中有三个水平布局。我希望这三个水平子布局占据相同的空间,所以我每个都添加权重(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>
答案 0 :(得分:3)
快速注释:嵌套的权重导致性能不佳,尽可能避免。不要混用match_parent
和fill_parent
。只需使用match_parent
。
您的主要问题是您的外layout_height="wrap_content"
LinearLayout
,但您有权重。您指定每个子布局为总数的1/3,但随后说总数应为其子项的总和。每个孩子的布局应该是1dp吗? 100dp?如果您希望每个屏幕都是整个屏幕的1/3,则应为外部layout_height="match_parent"
设置LinearLayout
。
答案 1 :(得分:0)
我同意Kabuko,请将所有fill_parent更改为match_parent。
如上所述,我建议将高度更改为0dp,但为所有LinearLayout设置权重1。
重量值是“因素”而不是百分比。
请参阅此What does android:layout_weight mean?以获取有关如何使用layout_weight
的清除示例