指定重量ListView会在删除项目时减小大小

时间:2012-11-11 19:22:14

标签: android listview android-linearlayout android-layout-weight

我正在研究android中的一个对话框,我打算为不同的手机分辨率提供灵活性。因此,我在构建xml文件时使用layout_weight属性。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/newGame_linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="center_horizontal"
        android:layout_weight="3"
        android:orientation="horizontal" >

        <ListView
            android:id="@+id/newGame_InvitedPlayers"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:background="@color/ListView_Background"
            android:cacheColorHint="#00000000" >
        </ListView>

        <ListView
            android:id="@+id/newGame_Plugins"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:background="@color/ListView_Background"
            android:cacheColorHint="#00000000" >
        </ListView>
    </LinearLayout>

    <Button
        android:id="@+id/newGame_sendInvite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Invite Players" />

    <TextView
        android:id="@+id/newGame_textViewOnlinePlayers"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Online Players:" />

    <ListView
        android:id="@+id/newGame_onlinePlayers"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_margin="5dp"
        android:layout_weight="2"
        android:background="@color/ListView_Background"
        android:cacheColorHint="#00000000" >
    </ListView>

</LinearLayout>

以下是它应该如何看待:

desired outcome

确实看起来我想要它。

但是,当我单击底部Listview中的项目,将它们从底部ListView中删除并将它们添加到左上方ListView时,底部Listview的大小会减小,直到我删除最后一项并且它完全消失并且看起来像这样:

current outcome

我希望它根本不会改变大小。即使它是空的。

即使dp是一个非常灵活的大小单元,我也不想在这种情况下使用它, 两个顶部的ListView应该占据屏幕的3/5,而底部的一个得到剩下的2/5,而Button和TextView应该占用尽可能少的空间。

我尝试将最后的Listviews高度更改为match_parent,但它不会更改任何内容。单击项目时,列表视图仍然消失。

1 个答案:

答案 0 :(得分:0)

修复最后一个ListView的高度,并为左右ListViews父级布局添加android:layout_weight =“1”