具有多个圆圈的形状

时间:2017-12-21 21:32:11

标签: android

我想在一个颜色为2的圆圈内绘制一个颜色为1的圆圈。它们都有笔划,内部是透明的。这应该用作按钮的背景。

像这样的东西(但是绿色和红色是彼此相邻的 - 两者之间没有间隙。抱歉,我没有任何图形程序可以绘制它们,所以它们彼此相邻。)

enter image description here

有没有办法在XML中做到这一点?

我正在考虑使用形状XML来做这件事,但是图层会缩放,因此图层会相互叠加,因此只能看到1种颜色。

3 个答案:

答案 0 :(得分:1)

尝试这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size android:height="10dp" android:width="10dp"/>
            <stroke
                android:width="2dp"
                android:color="#FF0000"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="1dp"
                android:color="#00FF00"
                />
        </shape>
    </item>
</layer-list>

您可以更改width元素的heightsize以获得不同的宽度。

答案 1 :(得分:1)

你可以通过定义两个可绘制的资源来实现这一点,这两个资源都用不同的笔触颜色圈出来,然后将它们放在一个图层列表可绘制的资源中,然后使用不同的集合来提供你需要的效果:

内圈 inner.xml

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

</shape>

外圈 outer.xml

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

</shape>

按钮背景 background.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/outer"
        android:right="0dp"
        android:top="0dp"
        android:bottom="0dp"
        android:left="0dp"
        android:gravity="center"/>
    <item android:drawable="@drawable/inner"
        android:right="4dp"
        android:top="4dp"
        android:bottom="4dp"
        android:left="4dp"
        android:gravity="center"/>

</layer-list>

这是最终结果

enter image description here

答案 2 :(得分:1)

你使用带有插图的图层列表,以避免内圈从外圈潜伏,如下所示:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <stroke
                android:width="4dp"
                android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item>
        <inset android:inset="4dp">
            <shape android:shape="oval">
                <stroke
                    android:width="4dp"
                    android:color="@android:color/holo_green_dark" />
            </shape>
        </inset>
    </item>
</layer-list>

您可以像这样设置按钮的大小和背景:

<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@drawable/red_green" />

然后看起来像这样:

enter image description here