Android中的环形形状

34

我在drawable文件夹中有以下的xml代码(circle_status.xml),用于创建一个圆环:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadius="15dp"
    android:thickness="10dp"
    android:useLevel="false">
    <solid android:color="#ababf2" />
</shape>

然后我将可绘制对象作为RelativeLayout的背景插入,如下所示:

<RelativeLayout
    android:id="@+id/RelativeLayout_Status"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/circle_status" />

问题是RelativeLayout中出现了一个圆圈,而不是一个环。

请上传您的结果屏幕截图和您所期望的结果。 - amalBit
抱歉,我无法发布图片:( 但是,问题很简单,我有一个圆形,现在需要将其变成环形。 - suanido
在任何门户网站上添加一张图片并分享链接,只有我理解了你的问题才能帮助你。 - amalBit
不,我正在真实设备上测试并画了一个圆圈而不是一个环。谢谢。 - suanido
1
SteveR,你是正确的,我今天再次测试,它在真实设备上完美运行。谢谢。 - suanido
显示剩余3条评论
4个回答

34

需要注意的是,一个圆环是没有填充的椭圆,只有描边。同时包裹它的视图应该是一个完美的正方形。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">

<stroke
    android:width="1dp"
    android:color="@color/blue" />
</shape>

并且视图持有它

<ImageView
     android:layout_width="10dp"
     android:layout_height="10dp"
     android:src="@drawable/ring" />

6
“一个环是一个没有填充,只有描边的椭圆形”,这正是我需要知道的(而在开发者文档中并没有明确说明)。 - Jonik
这不是真的。有一个内半径的概念。 - dcow
1
注意,环形是没有填充的椭圆形!!好句子。我从没想过:D。它比环形更有效:D。 - Amir Ziarati
1
只是一点提示,如果想给它着色,请设置一个透明的纯色来避免出现完整的椭圆形:<solid android:color="@android:color/transparent" /> - alexbchr

22

我回答自己。

问题似乎出现在Eclipse的图形布局编辑器中,在真实设备上代码可以正常工作。


我在谷歌上找不到这个问题的现有问题,所以我在这里提出了:https://code.google.com/p/android/issues/detail?id=92345 如果您给该问题点赞,它就更有可能被解决。 :-) - Dan J

12

这个技巧展示了如何在设备和Android Studio上显示一个环形图:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring" android:innerRadius="23dp" android:thickness="0dp">
    <stroke android:width="2dp" android:color="#ababf2" />
</shape>

9
如果您的API等级低于20,使用android:useLevel="false",否则可能会出现混乱。请注意,我的任务是翻译,因此我不会提供任何其他信息或解释,并且将尽力使翻译通俗易懂而不改变原意。 - Stack Diego

5

<shape>标签中,制作环形时必须使用<stroke>标签而不是<solid>标签。如果在<shape>标签中使用<solid>标签,则会得到一个圆形而不是一个环形。

<solid>标签可用于环形的背景颜色,<stroke>标签可用于环形的主体颜色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接