Android:LinearLayout中的ListView让其他布局子项消失

时间:2015-11-22 14:26:32

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

我有一个带有几个孩子的简单LinearLayout。整个活动设计基本上是从Google BluetoothChat示例中复制而来的。 LinearLayout包含2个ListView,用于显示可以找到的配对蓝牙设备和蓝牙设备(如果它们可以被发现)。

问题:如果配对设备太多,第一个ListView会占用整个屏幕,因此ScanButton不再可见。因为我正在使用android:weight,所以ScanButton总是没有足够的空间。

这里是xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
>

<TextView
    android:id="@+id/title_paired_devices"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#666"
    android:paddingLeft="5dp"
    android:text="@string/deviceList_title_paired_devices"
    android:textColor="#fff"
    android:visibility="gone"
    />

<ListView
    android:id="@+id/paired_devices"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:stackFromBottom="true"
    />

<TextView
    android:id="@+id/title_new_devices"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#666"
    android:paddingLeft="5dp"
    android:text="@string/deviceList_title_other_devices"
    android:textColor="#fff"
    android:visibility="gone"
    />

<ListView
    android:id="@+id/new_devices"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:stackFromBottom="true"
    />

<Button
    android:id="@+id/button_scan"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Scan"
    />
 </LinearLayout>

3 个答案:

答案 0 :(得分:0)

您应该将layout_weight分配给所有视图,而不仅仅是ListView

答案 1 :(得分:0)

不要使用:

android:layout_height="wrap_content"

因为这将导致列表视图增长以适合所有内容。

答案 2 :(得分:0)

将0dp作为列表视图和权重1的高度:

android:layout_height="0dp"
android:layout_weight="1"