Рисование нескольких фигур с помощью 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 по необходимости: -)