Lorsque je crée une mise en page simple avec seulement un ListView, il n'y a aucun séparateur affiché après le dernier élément, qui a l'air un peu moche.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<ListView
Android:id="@Android:id/list"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true" />
</RelativeLayout>
Cependant, j'ai découvert qu'un séparateur est affiché après le dernier élément si j'ajoute une autre vue au-dessous de listview et que je définis l'attribut Android:layout_above
pour la listview.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<ListView
Android:id="@Android:id/list"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_above="@+id/bottom"
Android:layout_alignParentTop="true" />
<TextView
Android:id="@+id/bottom"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:background="@Android:color/holo_blue_dark"
Android:text="Bottom" />
</RelativeLayout>
Pourquoi le listview se comporte comme ça? Comment puis-je obtenir un séparateur après le dernier élément d'une mise en page contenant uniquement une vue en liste?
La réponse est très simple: vous devriez changer Android:layout_height="wrap_content"
en Android:layout_height="match_parent"
dans votre ListView
.
Vous pouvez probablement deviner pourquoi cela se produit.
Avez-vous essayé celui-ci?
Android:footerDividersEnabled="true"
sinon essayez ceci
<View
Android:background="#00ff00"
Android:layout_width="fill_parent"
Android:layout_height="3dp"
Android:layout_alignParentLeft="true"
Android:layout_alignParentRight="true"
Android:layout_below="@+id/YOUR_LIST_ID" />
Ajouter une vue vide en haut (et/ou en bas) pour créer un séparateur en haut (ou en bas)
myList.addHeaderView(new View(context));
myList.addFooterView(new View(context));
Je suis venu avec un bidouillage qui résout ce problème. Le dernier séparateur n'étant affiché que si une autre vue suit la vue liste, il est possible de rendre cette seconde vue invisible en définissant son layout_height
sur 0dp
.
C'est toujours un hack, mais jusqu'à la dernière division, l'apparence est cohérente, il est donc préférable d'essayer de créer manuellement une ligne horizontale en essayant de deviner la bonne couleur et les bonnes dimensions.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<ListView
Android:id="@Android:id/list"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_above="@+id/invisible"
Android:layout_alignParentTop="true" />
<View
Android:id="@+id/invisible"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_alignParentBottom="true" />
</RelativeLayout>
Je fais quelque chose de similaire à ce que décrit @Natix, mais au lieu de jouer avec la disposition contenant de la liste, j'ajoute simplement la vue vide en tant que pied de page de la liste via ListView.addFooterView ()
Cela semble quelque peu différent lorsque votre listview est affichée si vous la codez comme ça. Mais même vous pouvez suivre cela aussi.
Définissez d'abord un style nommé Line
<style name="Line">
<item name="Android:layout_width">fill_parent</item>
<item name="Android:layout_height">2px</item>
<item name="Android:background">@color/white</item>
</style>
// Dans le style ci-dessus, vous pouvez modifier la hauteur de la ligne selon vos besoins.
Où que vous souhaitiez utiliser la ligne ci-dessus, vous pouvez la déclarer comme ceci dans votre fichier xml.
<LinearLayout
Android:orientation = "vertical"
.......................
............................>
<ListView
Android:id="@Android:id/list"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
/>
<View
style="@style/Line"/>
</LinearLayout>
Le code ci-dessus crée une ligne sous votre liste. Le code ci-dessus est particulièrement utile lorsque vous souhaitez l’utiliser à divers endroits de votre projet. Ou si vous voulez à un seul endroit, vous pouvez le faire comme ça.
<LinearLayout
Android:orientation = "vertical"
.......................
............................>
<ListView
Android:id="@Android:id/list"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
/>
<View
Android:layout_width="fill_parent"
Android:layout_height="1px"
Android:background="#20b2aa" />
</LinearLayout>
J'espère que cela t'aides. BTW La raison est vague et même une fois, j’ai cherché cela et j’ai suivi le chemin que j’ai expliqué plus haut.