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

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

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

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

Вот как я сделал заполненный красный круг с однопиксельной черной рамкой с белым номером 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 по мере необходимости 🙂

Я думаю, что нашел решение добавить несколько фигур в свой 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-документы