Layout_weight获得2个相等高度的布局

时间:2014-02-21 00:59:11

标签: android user-interface

我目前正在修改xml布局,我想将所有视图分为2个部分,每个部分都有可用的高度。布局看起来像这样:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>   

    ...Lots of stuff...

</LinearLayout>

我所做的是将每个“半”视图包裹在线性布局中,并为每个视图分配权重。

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>  

    <!-- Top half -->
    <LinearLayout
        android:layout_weight="1"
        android:layout_height="0dp"
        android:layout_width="fill_parent"
        android:orientation="vertical">

        ... stuff and things ...

    </LinearLayout>

    <!-- Bottom half -->
    <LinearLayout
        android:layout_weight="1"
        android:layout_height="0dp"
        android:layout_width="fill_parent"
        android:orientation="vertical">

        ... things and stuff ...

    </LinearLayout>

</LinearLayout>

我无法弄清楚为什么这不会给我2个相同的窗格。较低的一个似乎占用了可用空间的90%。我尝试添加(android:weightSum =“2”)到容器布局,但无济于事。这些布局都没有ID,因此后面的代码不能修改它们。知道这里发生了什么吗?子视图是否能够修改它们的“半”容器以使它们看起来不相等?

2 个答案:

答案 0 :(得分:0)

此链接可能对您有用:

http://www.chess-ix.com/blog/the-use-of-layout_weight-with-android-layouts/

您正在做的事情似乎是正确的,但可能您的Linearlayouts中的内容可能是罪魁祸首。

答案 1 :(得分:0)

尝试将weightSum添加到父LinearLayout,如下所示:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="2">  

    <!-- Top half -->
    <LinearLayout
        android:layout_weight="1"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:orientation="vertical">

        ... stuff and things ...

    </LinearLayout>

    <!-- Bottom half -->
    <LinearLayout
        android:layout_weight="1"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:orientation="vertical">

        ... things and stuff ...

    </LinearLayout>

</LinearLayout>

此外,我更改了孩子们的layout_height:因为父母已经拥有该属性,所以您不需要为子LinearLayouts使用fill_parent。