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.

Foi útil?

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>

Postagem do blog

Docs Android

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 :-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top