programar - metodos de listview android
Separador(divisor) despuĂ©s del Ășltimo elemento de ListView (6)
¿Has probado este?
android:footerDividersEnabled="true"
si no, prueba esto
<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" />
Cuando creo un diseño simple con solo un ListView en él, no aparece un separador después del último elemento, que se ve un poco feo.
<?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>
Sin embargo, descubrí que se muestra un separador después del último elemento si agrego otra vista debajo de la vista de lista y configuro el atributo android:layout_above
para la vista de lista.
<?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>
¿Por qué la vista de lista se comporta así? ¿Cómo puedo obtener un separador después del último elemento en un diseño que solo contiene una vista de lista?
Agregue una vista vacía a la parte superior (y / o inferior) para crear un divisor en la parte superior (o inferior)
myList.addHeaderView(new View(context));
myList.addFooterView(new View(context));
Hago algo similar a lo que describe @Natix, pero en lugar de meterme con el diseño que contiene la lista, simplemente agrego la vista vacía como un pie de página en la lista a través de ListView.addFooterView ()
He venido con un truco que soluciona este problema. Dado que el último separador se muestra solo si otra vista sigue a la vista de lista, es posible hacer invisible esa segunda vista estableciendo su layout_height
en 0dp
.
Sigue siendo un truco, pero hace que el último aspecto del divisor sea coherente con el otro, por lo que es mejor tratar de crear manualmente una línea horizontal tratando de adivinar el color y las dimensiones correctas.
<?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>
La respuesta es muy simple: debe cambiar android:layout_height="wrap_content"
a android:layout_height="match_parent"
en su ListView
.
Probablemente puedas adivinar por qué sucede esto.
Parece algo diferente cuando se muestra la vista de lista si la codifica así. Pero incluso tú puedes seguir esto también.
Primero defina un estilo llamado 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>
// En el estilo anterior puedes cambiar la altura de la línea según tu requerimiento.
Donde quiera que quiera usar la línea anterior, puede declararlo así en su archivo 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>
El código anterior crea una línea debajo de su vista de lista. El código anterior es más útil cuando quieres usarlo en varios lugares de tu proyecto. O si lo desea en un solo lugar, puede hacerlo así.
<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>
Espero que esto ayude. Por cierto, la razón es vaga e incluso una vez busqué esto y seguí este camino que expliqué arriba.