Necesito agregar para agregar ListView con fondo de elementos complicados: diferente para esquinas pares / impares y redondeadas en la parte superior e inferior. Se parece a esto:
He implementado todas estas cosas a través de la lista de niveles, pero hay una cosa más que quiero hacer. Ahora el elemento inferior está cerca de la parte inferior de la pantalla. Es mejor agregar algo de espacio.
No quiero agregar margen inferior a ListView, necesito margen solo para el último elemento.
Las formas que veo para hacer esto:
Pie de página
Una especie de truco: agregue un pie de página con TextView vacío a ListView. Pero los pies de página son cosas bastante inestables, generalmente desaparecen después de notifyDataSetChanged y no hay forma de recuperarlos.
Imagen con píxeles transparentes
Le pedí al diseñador que agregara píxeles transparentes al recurso de fondo inferior. Desafortunadamente, en este caso el centrado vertical está completamente roto. Por ejemplo, hay 9 parche como este:
Y diseño como este:
<?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>
El resultado:
Como puede ver, el centrado no funciona. Desafortunadamente. (Por cierto, si especifica este parche 9 como fondo para TextView, el centrado funciona bien. Si conoce algún artículo que explique esto, hágamelo saber).
Agregar margen inferior al último elemento en la implementación del adaptador
Eso debería funcionar, pero por una razón desconocida todavía no puedo hacerlo funcionar. No me gusta esta forma, porque no me gusta modificar dimensiones en el código.
Entonces
Ya existe una forma imaginaria: construya algún XML dibujable con un mapa de bits y un margen particulares. Según el concepto de elementos de diseño, debería ser posible, pero no puedo encontrar la implementación. ¿Puede ser que alguien lo sepa?
¿Alguna otra idea?