J'ai besoin d'ajouter à un ListView des éléments compliqués background : différent pour even/odd et coins arrondis en haut et en bas. Cela ressemble à ceci :
J'ai implémenté tout cela via level-list, mais il y a encore une chose que je veux faire. Maintenant, l'élément du bas est près du bas de l'écran. Il est préférable d'ajouter un peu d'espace.
Je ne veux pas ajouter de marge inférieure au ListView, j'ai besoin d'une marge uniquement pour le dernier élément.
Les moyens que je vois pour y parvenir :
Pied de page
Une sorte de hack - ajouter un pied de page avec un TextView vide à ListView. Mais les pieds de page sont des choses assez instables, ils disparaissent généralement après notifyDataSetChanged et il n'y a aucun moyen de les récupérer.
Image avec des pixels transparents
J'ai demandé au designer d'ajouter des pixels transparents à la ressource de fond inférieure. Malheureusement, dans ce cas, le centrage vertical est complètement cassé. Par exemple, il y a 9patchs comme celui-ci :
Et une disposition comme celle-ci :
<?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"
>
<!-- View with background with transparent pixels on bottom -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
android:id="@+id/item"
android:background="@drawable/some_bgr"
android:padding="10dp"
>
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"
android:text="Title"
android:layout_gravity="center"
android:textSize="18sp"
/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Detail"
android:layout_gravity="center"
android:textSize="18sp"
/>
</LinearLayout>
<!-- Just for marking place took by view -->
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_below="@id/item"
android:background="#88ff55"
/>
</RelativeLayout>
Le résultat :
Comme vous le voyez, le centrage ne fonctionne pas. Malheureusement. (BTW, si vous spécifiez ce 9patch comme fond pour le TextView, le centrage fonctionne bien. Si vous connaissez un article, expliquant cela, faites le moi savoir).
Ajouter une marge inférieure au dernier élément dans la mise en œuvre de l'adaptateur
Ça devrait marcher, mais pour une raison inconnue, je n'arrive toujours pas à le faire fonctionner. Je n'aime pas cette méthode, car je n'aime pas modifier les dimensions dans le code.
Alors
Il existe déjà un moyen imaginaire de construire un dessinable XML avec un bitmap et une marge particuliers. Selon le concept de drawables, cela devrait être possible, mais je ne trouve pas d'implémentation. Peut-être que quelqu'un le sait ?
D'autres idées ?