recyclerview android android-listview divider

recyclerview - divider android



Android ListView Divider (12)

Tengo este código:

<ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/cashItemsList" android:cacheColorHint="#00000000" android:divider="@drawable/list_divider"></ListView>

donde @ drawable / list_divide es:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:width="1dp" android:color="#8F8F8F" android:dashWidth="1dp" android:dashGap="1dp" /> </shape>

pero no veo ningún divisor

¿ayuda?


Agrega android:dividerHeight="1px" y funcionará:

<ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/cashItemsList" android:cacheColorHint="#00000000" android:divider="@drawable/list_divider" android:dividerHeight="1px"></ListView>


Algunas personas pueden estar experimentando una línea sólida. Lo android:layerType="software" agregando android:layerType="software" a la vista que hace referencia al dibujable.


Amigos, he aquí por qué debería usar 1px en lugar de 1dp o 1dip: si especifica 1dp o 1dip, Android lo reducirá. En un dispositivo de 120 ppp, se convierte en algo así como 0.75px traducido, que se redondea a 0. En algunos dispositivos, eso se traduce en 2-3 píxeles, y por lo general se ve feo o descuidado

Para divisores, 1px es la altura correcta si quieres un divisor de 1 píxel y es una de las excepciones para la regla "todo debería ser sumergido". Será de 1 píxel en todas las pantallas. Además, 1px generalmente se ve mejor en hdpi y pantallas superiores

"No es 2012 más" edición: es posible que tenga que cambiar a dp / inmersión comenzando en una determinada densidad de pantalla


Del doc :

ubicación del archivo:

res / drawable / filename.xml

El nombre del archivo se usa como el ID del recurso .

básicamente, necesitarás poner un archivo llamado list_divider.xml en res/drawable/ para que puedas acceder a él como R.drawable.list_divider ; si puede acceder de esa manera, puede usar android:divider="@drawable/list_divider" en el XML para ListView .


Del doc:

public void setDivider (Divisible de Drawable) en ListView

/** * Sets the drawable that will be drawn between each item in the list. If the drawable does * not have an intrinsic height, you should also call {@link #setDividerHeight(int)} * * @param divider The drawable to use. */

Parece que se debe llamar a setDividerHeight para que aparezca el divisor si no tiene altura intrínseca


El problema que estás teniendo proviene del hecho de que te falta Android: dividerHeight, que necesitas, y el hecho de que estás tratando de especificar un grosor de línea en tu dibujo, que no puedes hacer con los separadores para algunos Razón extraña. Esencialmente para que su ejemplo funcione, podría hacer algo como lo siguiente:

Cree su dibujo como un rectángulo o una línea, ya sea que trabaje simplemente no puede intentar establecer cualquier dimensión en él, por lo tanto:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:color="#8F8F8F" android:dashWidth="1dp" android:dashGap="1dp" /> </shape>

O:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#8F8F8F"/> </shape>

Luego crea un estilo personalizado (solo una preferencia pero me gusta poder reutilizar cosas)

<style name="dividedListStyle" parent="@android:style/Widget.ListView"> <item name="android:cacheColorHint">@android:color/transparent</item> <item name="android:divider">@drawable/list_divider</item> <item name="android:dividerHeight">1dp</item> </style>

Finalmente declare su vista de lista usando el estilo personalizado:

<ListView style="@style/dividedListStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/cashItemsList"> </ListView>

Supongo que sabes cómo usar estos fragmentos, si no me lo dices. Básicamente, la respuesta a su pregunta es que no puede establecer el grosor del divisor en el dibujo, debe dejar el ancho indefinido y usar android: dividerHeight para configurarlo en su lugar.


Esta es una solución, pero funciona para mí:

Creado res / drawable / divider.xml de la siguiente manera:

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#ffcdcdcd" android:endColor="#ffcdcdcd" android:angle="270.0" /> </shape>

Y en styles.xml para el elemento listview, agregué las siguientes líneas:

<item name="android:divider">@drawable/divider</item> <item name="android:dividerHeight">1px</item>

Parte crucial era incluir esta configuración de 1px. Por supuesto, drawable usa gradiente (con 1px) y esa no es la solución óptima. Intenté usar un ACV pero no lo conseguí. (Parece que no usa estilos, solo agrega el atributo android: dividerHeight = "1px" para ListView.


Los documentos de Android advierten sobre la desaparición de las cosas debido a un error de redondeo ... Tal vez intente con dp en lugar de con px, y quizás también pruebe con> 1 primero para ver si se trata del problema de redondeo.

ver http://developer.android.com/guide/practices/screens_support.html#testing

para la sección "Imágenes con 1 pixel de altura / ancho"


Olvidaste una "r" al final del divisor en tu distribución divider xml

llama al diseño @ drawable / list_divider, pero su divisor xml se llama "list_divide"


Su @ drawable / list_divide debería verse así:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:height="1dp" android:color="#8F8F8F" android:dashWidth="1dp" android:dashGap="1dp" /> </shape>

En su versión usted proporciona un android: ancho de 1dp ;-) Simplemente cámbielo a android: altura de 1dp ¡y debería funcionar!


Tuve el mismo problema. Sin embargo, hacer que la vista 1px no pareciera funcionar en mi Nexus 7 original. Noté que la densidad de la pantalla era 213, que es menor que las 240 usadas en xhdpi. Entonces, estaba pensando que el dispositivo tenía una densidad de mdpi.

Mi solución fue hacer que la carpeta dimens tuviera un parámetro dividerHeight . Lo configuré en 2dp en la carpeta values-mdpi pero 1dp en las carpetas values-hdpi etc.


set android: dividerHeight = "1dp"

<ListView android:id="@+id/myphnview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@drawable/dividerheight" android:background="#E9EAEC" android:clickable="true" android:divider="@color/white" android:dividerHeight="1dp" android:headerDividersEnabled="true" > </ListView>