Desenhando várias formas com o Shapedrawable em XML com Android
Pergunta
Atualmente, estou desenhando vários círculos em uma tela em uma exibição personalizada no código. Os círculos são estáticos e não mudam. Gostaria de desenhá -los usando um ShapeDrawable em XML para ajudar a limpar meu código. Terei vários desenhos diferentes que o usuário pode selecionar e, portanto, não quero fazer isso no código. Ter 3 ou 4 desenhistas XML parece muito mais intenso para mim.
Eu criei um círculo em XML usando um Shapedrawable, mas não consigo adicionar mais de uma forma ao XML.
Como adiciono várias formas a um documento XML usando o ShapeDrawable.
Solução 2
Acho que encontrei uma solução para adicionar várias formas ao meu arquivo XML usando a lista de camadas. Ainda não tentei isso, mas isso parece ser exatamente o que eu quero, pois as formas serão desenhadas na ordem do í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>
Outras dicas
Veja como eu fiz um círculo vermelho preenchido com uma borda preta de um pixel, com um número branco 72 no meio:
Crie um arquivo xml em res drawable e nomeie -o adequadamente, por exemplo, 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>
Então, para usá -lo em seu layout, declare o seguinte:
<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, mude o texto e layout_width/altura conforme necessário :-)