与边界的透明圈子

我想在android中使用XML创build一个只有边框的圆:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <stroke android:width="1dp" android:color="#000000"/> </shape> 

我使用的代码已在上面发布。 但是,我得到一个坚实的磁盘和一个不响。 我想获得输出只使用XML而不是canvas。 我究竟做错了什么?

谢谢。

编辑:得到它的工作感谢下面的答案。 下面是我的最终代码:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="1.9" android:useLevel="false" > <solid android:color="@android:color/transparent" /> <size android:width="100dp" android:height="100dp"/> <stroke android:width="1dp" android:color="#FFFFFF"/> </shape> 

尝试这样的事情

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="2" android:useLevel="false" > <solid android:color="@android:color/transparent" /> <stroke android:width="2dp" android:color="@android:color/darker_gray" /> </shape> 

更新:使android:thicknessRatio="2"给整个圈子(使用Nexus 5 – 棒棒糖)

使用它,它将工作

  <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <gradient android:centerX=".6" android:centerY=".40" android:endColor="@android:color/transparent" android:gradientRadius="20" android:startColor="@android:color/transparent" android:type="radial" /> <stroke android:width="1dp" android:color="#FFFFFF" /> <size android:height="100dp" android:width="100dp" /> </shape> 

空洞

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <stroke android:width="1dp" android:color="@color/indicator_unselected" /> </shape> 

充分

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <corners android:radius="100dp" /> <solid android:color="@android:color/white" /> </shape> 

您可以使用android内置的透明值作为@android:color/transparent或使用#0000#00000000

对于上面开始的4位数字首先是对于阿尔法和在8位数字的价值第一个两位数字是相同的阿尔法。

当你只给3位数或6位数的颜色比默认的阿尔法值是ff你通过传入4位或8位数值设置该颜色值的alpha

如果你可以使用Vector drawable,试试这个

 <vector android:height="24dp" android:viewportHeight="512.0" android:viewportWidth="512.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#FFFFFF" android:fillType="evenOdd" android:pathData="M0,0L512,0L512,512L0,512L0,0ZM256,511C396.8,511 511,396.8 511,256C511,115.2 396.8,1 256,1C115.2,1 1,115.2 1,256C1,396.8 115.2,511 256,511Z" android:strokeColor="#00000000" android:strokeWidth="1"/> </vector>