Android ListView Divider

Tengo este código:

 

donde @drawable/list_divider es:

    

pero no puedo ver ningún divisor

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

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"?>    

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

  @drawable/divider 1px 

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.

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

  

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:

    

O:

    

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

  

Finalmente declare su vista de lista usando el estilo personalizado:

   

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.

Del doc:

 public void setDivider(Drawable divider) on 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 una altura intrínseca

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

    

En su versión usted proporciona un android:width="1dp" , simplemente cámbielo a android:height="1dp" y debería funcionar!

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 .

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.

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”

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.

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”

set android: dividerHeight = “1dp”