¿Cómo creo un ListView con esquinas redondeadas en Android?
android
android-layout
android-listview
Leyenda
fuente
fuente
Respuestas:
Aquí hay una forma de hacerlo (¡Sin embargo, gracias a la documentación de Android!):
Agregue lo siguiente en un archivo (por ejemplo, Customhape.xml) y luego colóquelo en (res / drawable / CustomShape.xml)
Una vez que haya terminado de crear este archivo, simplemente configure el fondo de una de las siguientes maneras:
A través del código:
listView.setBackgroundResource(R.drawable.customshape);
A través de XML , simplemente agregue el siguiente atributo al contenedor (por ejemplo, LinearLayout o cualquier campo):
Espero que alguien lo encuentre útil...
fuente
Aunque eso funcionó, también eliminó todo el color de fondo. Estaba buscando una manera de hacer solo el borde y reemplazar ese código de diseño XML con este, ¡y estaba listo!
fuente
@ kris-van-bael
Para aquellos que tienen problemas con la selección, resalte para la fila superior e inferior donde aparece el rectángulo de fondo en la selección, necesita configurar el selector para su vista de lista en color transparente.
En color.xml solo agregue lo siguiente:
fuente
android:cacheColorHint="@android:color/transparent"
¡Las otras respuestas son muy útiles, gracias a los autores!
Pero no pude ver cómo personalizar el rectángulo al resaltar un elemento tras la selección en lugar de deshabilitar el resaltado @alvins @bharat dojeha.
Lo siguiente funciona para mí para crear un contenedor de elementos de vista de lista redondeada sin contorno y un gris más claro cuando se selecciona de la misma forma:
Su xml debe contener un selector como por ejemplo (en res / drawable / customhape.xml):
Luego, debe implementar un adaptador de lista y anular el método getView para establecer el selector personalizado como fondo
y también necesito 'ocultar' el rectángulo selector predeterminado, por ejemplo, en onCreate (también oculto mi delgada línea divisoria gris entre los elementos):
Este enfoque resuelve una solución general para elementos dibujables, no solo ListViewItem con varios estados de selección.
fuente
Actualizar
La solución en estos días es utilizar un
CardView
soporte con esquinas redondeadas incorporado.Respuesta original *
Otra forma que encontré fue enmascarar su diseño dibujando una imagen sobre la parte superior del diseño. Te puede ayudar. Echa un vistazo a las esquinas recortadas redondeadas XML de Android
fuente
Otra solución más para la selección resalta los problemas con los primeros y últimos elementos de la lista:
Agregue relleno en la parte superior e inferior de su fondo de lista igual o mayor que el radio. Esto garantiza que el resaltado de selección no se superponga con las curvas de las esquinas.
Esta es la solución más fácil cuando necesita resaltado de selección no transparente.
fuente
En realidad, creo que la mejor solución se describe en este enlace:
http://blog.synyx.de/2011/11/android-listview-with-itated-corners/
en resumen, utiliza un fondo diferente para los elementos superior, medio e inferior, de modo que los superiores e inferiores se redondeen.
fuente
Esto fue increíblemente útil para mí. Me gustaría sugerir otra solución alternativa para resaltar perfectamente las esquinas redondeadas si está utilizando su propia
CustomAdapter
.Definición de archivos XML
En primer lugar, vaya a su carpeta dibujable y cree 4 formas diferentes:
shape_top
forma_normal
forma_bottom
rodeado de forma
Ahora, cree un diseño de fila diferente para cada forma, es decir, para
shape_top
:También puede hacer esto cambiando programáticamente el fondo.
Y defina un selector para cada lista conformada, es decir, para
shape_top
:Cambie su Adaptador personalizado
Finalmente, defina las opciones de diseño dentro de su
CustomAdapter
:¡Y ya está!
fuente
para hacer el borde, debe hacer otro archivo xml con propiedad de sólidos y esquinas en la carpeta dibujable y lo llama en segundo plano
fuente
Estoy usando una vista personalizada que diseño encima de las otras y que solo dibuja las 4 esquinas pequeñas del mismo color que el fondo. Esto funciona independientemente de los contenidos de la vista y no asigna mucha memoria.
fuente