如何使用Android xml形状在圆圈内绘制一个圆圈?

我正在努力为我的应用程序制作一个search栏,并且我想要一个由不同的,更大的(半透明的)外圈包围的内圈。 我试图使用layer-list ,但我有问题。 以下是我的代码…

 <?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="#00f" /> <size android:height="15dp" android:width="15dp" /> </shape> </item> <item> <shape android:shape="oval" > <solid android:color="#f00" /> <size android:height="10dp" android:width="10dp" /> </shape> </item> </layer-list> 

我希望在一个更大的蓝色圆圈上面看到一个小红圈,但是我所看到的只是一个小红圈。 有没有人有任何想法?

Solutions Collecting From Web of "如何使用Android xml形状在圆圈内绘制一个圆圈?"

我得到这个工作的唯一方法是为内部(即顶部)圆定义透明笔划,这是大小圆圈大小之间的差异。

例如,这个:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Larger blue circle in back --> <item> <shape android:shape="oval"> <solid android:color="#00f"/> <size android:width="15dp" android:height="15dp"/> </shape> </item> <!-- Smaller red circle in front --> <item> <shape android:shape="oval"> <!-- transparent stroke = larger_circle_size - smaller_circle_size --> <stroke android:color="@android:color/transparent" android:width="5dp"/> <solid android:color="#f00"/> <size android:width="10dp" android:height="10dp"/> </shape> </item> </layer-list> 

…看起来像这样:

在这里输入图像说明

希望这会有所帮助。 这是可绘制的* .xml

  <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="oval"> <padding android:bottom="1dp" android:left="1dip" android:right="1dp" android:top="1dp" /> <solid android:color="#000" /> </shape> </item> <item> <shape android:shape="oval"> <padding android:bottom="1dp" android:left="1dip" android:right="1dp" android:top="1dp" /> <solid android:color="#EEE" /> </shape> </item> </layer-list> 

这是晚了,但也许有帮助,你可以使用填充中心圈。

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="oval"> <solid android:color="#00fff"/> <padding android:bottom="30dp" android:left="30dp" android:right="30dp" android:top="30dp"/> <stroke android:width="1dp" android:color="@color/holo_red_light"/> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#00666666"/> <size android:width="120dp" android:height="120dp"/> <stroke android:width="1dp" android:color="@color/holo_red_light"/> </shape> </item> </layer-list> 

我设法通过在<layer-list>设置<item>的宽度和高度来解决这个问题。 大概不是最好的做法,但像列表视图中具有固定尺寸的图标背景似乎没问题。

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- larger circle at the back --> <item android:height="54dp" android:width="54dp" android:gravity="center"> <shape android:shape="oval"> <solid android:color="#0000FF"/> <!-- thicker outer boarder --> <stroke android:width="2dp" android:color="#000000"/> </shape> </item> <!-- inner circle --> <item android:height="40dp" android:width="40dp" android:gravity="center"> <shape android:shape="oval" > <solid android:color="#00FF00"/> <stroke android:width="1dp" android:color="#000000"/> </shape> </item> </layer-list>