programacion - Dibujar formas mĂșltiples con ShapeDrawable en xml con Android
manual de android en pdf (2)
Así es como hice un círculo rojo lleno con un borde negro de un píxel, con un número blanco 72 en el medio:
Cree un archivo XML en res / drawable y asígnele un nombre apropiado, por ejemplo, red_circle_black_border.xml
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@android:color/black" />
</shape>
</item>
<item android:top="1dp" android:left="1dp" android:right="1dp" android:bottom="1dp">
<shape android:shape="oval">
<solid android:color="@android:color/red" />
</shape>
</item>
</layer-list>
Luego, para usarlo en su diseño, declare de la siguiente manera:
<TextView
android:text="72"
android:textSize="14dp"
android:textStyle="bold"
android:background="@drawable/red_circle_black_border"
android:layout_width="22dp"
android:layout_height="22dp"
android:gravity="center_vertical|center_horizontal"
android:textColor="@android:color/white" />
Obviamente, cambie textSize y layout_width / height según sea necesario :-)
Actualmente estoy dibujando una serie de círculos en un lienzo en una vista personalizada en el código. los círculos son estáticos y no cambian. Me gustaría dibujarlos usando ShapeDrawable en xml para ayudar a limpiar mi código. Dispondré de una serie de tipos diferentes que el usuario puede seleccionar y, por lo tanto, no quiero hacer esto en el código. tener 3 o 4 xml dibujables parece mucho más ordenado para mí.
He creado un círculo en xml usando ShapeDrawable pero no puedo agregar más de una forma al xml.
¿Cómo agrego múltiples formas a un documento xml usando ShapeDrawable?
Creo que he encontrado una solución para agregar múltiples formas a mi archivo xml usando Layer-list. Todavía no lo he intentado, pero parece ser exactamente lo que quiero, ya que las figuras se dibujarán en el orden de su índice de matriz.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#FFF8F8F8" />
</shape>
</item>
<item android:top="23px">
<shape>
<solid android:color="#FFE7E7E8" />
</shape>
</item>
</layer-list>