使用Android在xml中使用ShapeDrawable绘制多个形状

我正在代码中的自定义视图中画一个canvas上的圈数。 圆是静态的,不会改变。 我想用xml中的ShapeDrawable来绘制它们来帮助清理我的代码。 我将有许多不同的drawable,用户可以select,因此我不想在代码中这样做。 有3或4 xml drawables似乎很整洁我。

我已经使用ShapeDrawable在xml中创build了一个圆,但无法向xml添加多个形状。

如何使用ShapeDrawable将多个graphics添加到xml文档中。

以下是我用一个像素黑色边框填充的红色圆圈,中间是一个白色的数字72:

在res \ drawable中创build一个XML文件并适当命名,例如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 🙂

我想我已经find了一个解决scheme,使用层列表添加多个形状到我的XML文件。 我还没有尝试过,但这似乎是正是我想要的形状将被绘制在他们的数组索引的顺序。

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