Ich habe dieses Listview in einem Linearlayout:Höhe von Listview füllt den ganzen Bildschirm, obwohl eingestellt als wrap_content
<?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>
Die Liste programmatisch von einem SimpleCursorAdapter bevölkert ist:
adapter = new SimpleCursorAdapter(this, R.layout.list_row_search, mCursor, from, to);
list_row_search hat eine Tablelayout mit zwei TableRows:
<?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>
Jetzt, wenn die Liste ausgefüllt wird, die L IstView belegt den Lochbildschirm, auch wenn nur ein Element in der Datenbank gefunden wurde. Die Hierarchieansicht in der Eclipse zeigt ziemlich klar, dass die ListView diejenige ist, die den Bildschirm ausfüllt.
Können Sie sagen, wo das Problem liegt? Vielen Dank für Ihre Zeit!
Vielen Dank für Ihre Antwort, aber das Ändern der Höhe von "wrap_content" auf 0dp/weight = 1 führt zu demselben Verhalten: Das ListView füllt den gesamten Bildschirm aus. In der Tat habe ich versucht, etwas unter der Liste zu zeigen, aber eine ganze Listenansicht, die nur ein Element zeigt (wenn nur ein gefunden wurde), brachte mich dazu, die Liste darunter zu setzen ... –
Sie können es immer Höhe = 0 und Gewicht = 1 geben. Fügen Sie eine weitere Ansicht hinzu, und das LinearLayout wird Speicherplatz für dieses Element zuweisen und den Rest der ListView zuweisen. Wenn Sie stattdessen versuchen, ein Element zu haben, das am Ende der Liste steht, aber mit dem Inhalt der Liste scrollt, wollen Sie 'ListView.addFooterView()' betrachten – Karakuri