¿El atributo <size> no es útil cuando se usa layer-list?
Dado Tengo un fondo dibujable para crear bulletpoints para TextViews como este:
Entonces mi código XML se parece a esto:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:right="235dp"> <shape android:shape="oval"> <padding android:left="10dp" /> <size android:height="5dp" android:width="5dp"/> <solid android:color="@color/my_pink"/> </shape> </item> <item android:left="10dp"> <shape android:shape="rectangle"> <solid android:color="#ffffff"/> <padding android:left="10dp" /> </shape> </item> </layer-list>
Pero una vez que uso el código mostrado arriba, mis puntos de la bala se parecen a esto:
Parece que la etiqueta <size>
se ignora por completo.
¿Cómo resolverías este problema? Usando un 9patch, sí lo sé .. tal vez eso es lo más fácil de hacer .. pero de hecho esperaba encontrar una solución XML, ya que es más flexible en el futuro.
Dibujo personalizado también está fuera de la cuestión.
<size>
etiqueta <size>
ciertamente funciona en layer-list
y para mostrar los puntos de bala para textviews puedes usar el atributo xml android:drawableLeft
-> link
Con este enfoque, no hay necesidad de 9-patch y dibujo personalizado.
Código de publicación y captura de pantalla aquí para la referencia.
Res / drawable / bullet_point_layer.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:right="3dp"> <shape android:shape="oval"> <padding android:left="10dp" /> <size android:height="10dp" android:width="10dp"/> <solid android:color="#ff0080"/> </shape> </item>
Res / layout / main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView one" android:textColor="@android:color/black" android:drawableLeft="@drawable/bullet_point_layer" android:background="@android:color/white" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView Two" android:textColor="@android:color/black" android:drawableLeft="@drawable/bullet_point_layer" android:background="@android:color/white" /> </LinearLayout>
Como luce
Este es un viejo post, pero pensé que iba a añadir algo muy importante que falta en este post.
Desde mi experiencia, el último elemento de la <layer-list>
será el elemento del que se toma el valor de tamaño.
Así que en este ejemplo creo una línea divisora de dos líneas. Especifico un elemento vacío al final para especificar la altura del separador.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle"> <solid android:color="#535353" /> </shape> </item> <item android:top="@dimen/common_divider_line_half_size"> <shape android:shape="rectangle"> <solid android:color="#737373" /> </shape> </item> <!-- Last item empty to specify divider height --> <item> <shape android:shape="rectangle"> <size android:height="@dimen/common_divider_line_size"/> <solid android:color="@android:color/transparent" /> </shape> </item> </layer-list>