ListView控件的高度填满整个屏幕,虽然设置为WRAP_CONTENT(Height of Li

2019-07-21 21:16发布

我有一个的LinearLayout这里面的ListView:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        .../>

    <EditText />
      ...
    </EditText>


    <ListView
        android:id="@+id/words_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

这份名单是由SimpleCursorAdapter编程填充:

adapter = new SimpleCursorAdapter(this, R.layout.list_row_search, mCursor, from, to);

list_row_search具有两个TableRows一个TableLayout:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/TableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <View
        android:layout_height="1dip"
        android:background="#FF33B5E5" />

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/list_lesson"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="1dip"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/list_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="5.25"
            android:padding="1dip"
            android:paddingRight="10dp"
            android:textSize="18sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/list_flex"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="12.5"
            android:padding="1dip"
            android:paddingRight="10dp" />

        <TextView
            android:id="@+id/list_rom"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="6.25"
            android:padding="1dip"
            android:paddingRight="10dp" />
    </TableRow>

    <View
        android:layout_height="0.1dip"
        android:background="#404040" />

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/list_related"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingRight="10dp"
            android:textStyle="italic" />

        <TextView
            android:id="@+id/list_ant"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingRight="10dp" />

        <TextView
            android:id="@+id/list_engl"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingRight="10dp" />
    </TableRow>

    <View
        android:layout_height="1dip"
        android:background="#FF33B5E5" />

</TableLayout>

现在被填充列表时,ListView中占据孔屏,即使只有一个元素在数据库中找到。 在Eclipse中HierarchyView显示很清楚,该ListView的是填写的屏幕之一。

你可以看出,问题出在哪里? 谢谢你的时间!

Answer 1:

你不应该使用wrap_content了高度ListViewwrap_content表示“根据需要来保存所有我的孩子让我一样大。” 当你考虑你的数据集可能是潜在的非常大的,这应该听起来像一个非常糟糕的主意。 由于您使用的是LinearLayout中,给你的ListView layout_height="0dp"layout_weight="1"

没关系,让ListView走在屏幕的其余部分。 如果它只有一行,它会显示一个行,没什么大不了的。 除非你想显示列表下面的东西,但我已经告诉你应该之上实现这一目标。



Answer 2:

如果上述方法无效,你可以只使用RelativeLayout ,而不是线性的,把ListView的下方EditText



文章来源: Height of ListView fills the whole screen, although set as wrap_content