Drawing multiple shapes with ShapeDrawable in xml with Android
Here's how I did a filled red circle with a one-pixel black border, with a white number 72 in the middle:
Create an XML file in res\drawable and name it appropriately, eg 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>
Then, to use it in your layout, declare it as follows:
<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" />
Obviously, change the textSize and layout_width/height as required :-)
I think I have found a solution to add multiple shapes to my xml file using Layer-list.I havent tried this yet but this seems t be exactly what I want as the shapes will be draw in the order of their array index.
<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>