Hauteur de ListView remplit tout l'écran, bien que défini comme wrap_content
j'ai cette liste à l'intérieur d'un LinearLayout:
<?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>
La Liste est remplie par programmation par un SimpleCursorAdapter:
adapter = new SimpleCursorAdapter(this, R.layout.list_row_search, mCursor, from, to);
list_row_search a un TableLayout avec deux 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>
Maintenant, quand la liste est renseignée, la liste occupe le trou de l'écran, même si un seul élément a été trouvé dans la base de données. Le HierarchyView dans eclipse montre assez clairement, que la liste est celui qui remplit l'écran.
Pouvez-vous dire, où est le problème? Merci pour votre temps!
source d'informationauteur John D.
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas utiliser
wrap_content
pour la hauteur d'unListView
.wrap_content
signifie "faites-moi aussi grand que nécessaire pour contenir tous mes enfants." Quand vous considérez que vos données pourraient être potentiellement très important, qui devrait ressembler à une assez mauvaise idée.Puisque vous utilisez un LinearLayout, donner votre ListView
layout_height="0dp"
etlayout_weight="1"
.Il est bon de laisser le
ListView
prendre le reste de l'écran. Si elle ne compte qu'une seule ligne, il affiche une ligne, pas une grosse affaire. Sauf si vous êtes en essayant de montrer quelque chose en dessous de la liste, mais ce que je vous ai dit ci-dessus devrait le faire.Si ci-dessus ne fonctionne pas, vous pouvez simplement utiliser
RelativeLayout
au lieu de linéaire et de mettre leListView
sous leEditText
.