Android形状:圆形交叉(加号)

时间:2015-03-13 14:53:31

标签: android xml

我试图在中间插入一个带十字(加号)的圆圈,如下所示:

enter image description here

我一直在阅读的大部分教程在图层列表中都没有任何帮助。到目前为止,这是我的代码:

<item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
    <shape android:shape="line">
        <stroke android:width="10dp" />
        <solid android:color="@color/bus_red" />
    </shape>
</item>

<item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
    <rotate
        android:fromDegrees="0"
        android:toDegrees="90" >
            <shape android:shape="line">
                <stroke android:width="10dp" />
                <solid android:color="@color/bus_red" />
            </shape>
    </rotate>
</item>

<item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
    <shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="ring"
        android:innerRadius="20dp"
        android:thickness="5dp"
        android:useLevel="false">

        <solid android:color="@color/bus_red" />
    </shape>
</item>

正如你所看到的,我有一个环形和两个线形,其中一个我试图旋转。戒指的形状没有问题,我无法将两条线放在中间,甚至让它们显示出来。

3 个答案:

答案 0 :(得分:15)

我使用这个可绘制的xml完成​​了类似的东西(中间带有白色加号的实心圆圈):

<?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="@color/accent"/>
        </shape>
    </item>
    <item>
        <shape android:shape="line">
            <stroke android:width="5dp" android:color="@android:color/white" />
         </shape>
    </item>
    <item>
        <rotate
            android:fromDegrees="90"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="-90">
            <shape android:shape="line">
                <stroke android:width="5dp" android:color="@android:color/white" />
            </shape>
        </rotate>
    </item>
</layer-list>

答案 1 :(得分:1)

在RelativeLayout中:

<View
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="@drawable/circle_add"/>

circle_add:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval" >
            <solid
                android:color="@color/bus_green" />
            <size
                android:width="30dp"
                android:height="30dp" />
        </shape>
    </item>

    <item android:top="10dp" android:left="17dp" android:bottom="10dp" android:right="17dp">
        <shape>
            <stroke android:width="0dp" android:color="#ff207d94" />
            <padding android:left="0dp"
                android:top="0dp"
                android:right="0dp"
                android:bottom="0dp" />
            <corners android:radius="0dp" />
            <solid android:color="#ffffffff" />
        </shape>
    </item>

    <item android:top="17dp" android:left="10dp" android:bottom="17dp" android:right="10dp">
        <shape>
            <stroke android:width="0dp" android:color="#ff207d94" />
            <padding android:left="0dp"
                android:top="0dp"
                android:right="0dp"
                android:bottom="0dp" />
            <corners android:radius="0dp" />
            <solid android:color="#ffffffff" />
        </shape>
    </item>
</layer-list>

答案 2 :(得分:0)

我认为这种方法仍然有效,因为它仍然在XML中使用drawable

您可以在Android Studio中创建名为add circle outline的新矢量资产。

这是它生成的代码:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>