Рисование нескольких фигур с помощью ShapeDrawable в xml с Android

В настоящее время я рисую несколько кругов на холсте в пользовательском представлении в коде. круги статичны и не меняются. Я хотел бы нарисовать их, используя ShapeDrawable в xml, чтобы очистить мой код. У меня будет несколько различных чертежей, которые пользователь может выбрать, и поэтому я не хочу делать это в коде. имея 3 или 4 xml drawables, кажется мне намного опрятным.

Я создал один круг в xml с помощью ShapeDrawable, но не смог добавить более чем одну форму в xml.

Как добавить несколько фигур в XML-документ с помощью ShapeDrawable.

Ответ 1

Я думаю, что нашел решение добавить несколько фигур в мой XML файл, используя Layer-list. Я даже не пробовал это, но это похоже на то, что я хочу, поскольку фигуры будут рисовать в порядке их индекса массива.

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

Сообщение в блоге

Android-документы

Ответ 2

Вот как я сделал заполненный красный круг с однопиксельной черной рамкой с белым номером 72 посередине:

Создайте XML файл в res\drawable и назовите его соответствующим образом, например 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>

Затем, чтобы использовать его в своем макете, объявите его следующим образом:

<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" />

Очевидно, измените значение textSize и layout_width/height по необходимости: -)