Рисование нескольких фигур с помощью ShapeDrawable в xml с Android - PullRequest
49 голосов
/ 31 октября 2010

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

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

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

Ответы [ 2 ]

83 голосов
/ 21 марта 2011

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

43 голосов
/ 05 ноября 2010

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

...