我正在尝试使用Android中的XML创建一个只有边框的圆圈:
<?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>
答案 0 :(得分:150)
尝试这样的事情
<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 - Lollipop)
答案 1 :(得分:29)
使用它会起作用
<?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>
答案 2 :(得分:9)
空心
if __name__ == "__main__"
完整
<?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>
答案 3 :(得分:3)
如果你可以使用Vector drawables试试这个
<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>
答案 4 :(得分:1)
你可以使用android内置值透明为@android:color/transparent
或使用#0000
或#00000000
以上为4位数首先开始是alpha,而8位数值前两位数与alpha相同。
当您只提供3位数或6位数的颜色时,默认的alpha值是ff您通过传入4位数或8位数值设置该颜色值的alpha
答案 5 :(得分:1)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval" >
<stroke
android:width="4dp"
android:color="@color/colorPrimaryDark" />
<corners android:radius="0dp" />
</shape>
</item>
<item
android:top="1dp"
android:bottom="1dp"
android:left="1dp"
android:right="1dp">
<shape android:shape="oval">
<solid android:color="@color/colorRed" />
<size android:height="@dimen/_100sdp"
android:width="@dimen/_100sdp"></size>
</shape>
</item>
</layer-list>
答案 6 :(得分:1)
绘制透明的椭圆形可以达到笔触效果 带有所需颜色的笔触(示例中为#000):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#000" />
<size
android:width="40dp"
android:height="40dp" />
</shape>
答案 7 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval" >
<gradient
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#d9d9d9" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
</item>
<item
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp">
<shape android:shape="oval" >
<gradient
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#b3b3b3" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
</item>
</layer-list>
答案 8 :(得分:0)
如果将颜色设置为#00000000
,结果将是透明的。如果您想在将来的开发中进行更改,则可能需要这样做。例如,如果您希望它为红色且部分透明,则它将为#ff000088
。最后两个数字是不透明度。
我这样做是为了使将来的更改更容易。
答案 9 :(得分:0)
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="2"
android:shape="ring"
android:thicknessRatio="1"
android:useLevel="false">
<gradient
android:type="radial"
android:gradientRadius="8dp"
android:endColor="@color/colorDarkPurple"
android:elevation="5dp"
/>
<stroke
android:width="2dp"
android:color="@color/colorLilac"/>
</shape>