圆形的矩形与顶部android drawable XML上的笔划

时间:2014-07-12 06:49:43

标签: android xml drawable android-drawable xml-drawable

我试图在android中使用XML制作一个drawable。要求是我需要一个圆角矩形(所有4个圆角),顶部边缘只有7dp高度的笔划。我正在使用以下XML:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <stroke android:width="5dp" android:color="@color/theme_color" />
            <solid android:color="@color/theme_color" />
            <corners
                android:radius="7dp"/>
            <padding android:top="7dp"/>
        </shape>
    </item>

    <item>
        <shape
            android:shape="rectangle">
            <stroke android:width="1dp" android:color="@color/designer_cell_background" />
            <solid android:color="@color/designer_cell_background" />
            <corners
                android:radius="7dp"
                android:topRightRadius="0dp"
                android:topLeftRadius="0dp"/>
            <padding android:bottom="1dp"/>
        </shape>
    </item>
</layer-list>

我的工作几乎没问题,只是bottomRight和bottomLeft角没有圆角。

问题 - 1:如何使底角变圆?

问题 - 2:这是实现我真正想要的正确方法吗?有没有更好的办法?我问这个是因为,我明白我在这里做的实际上是制作两个矩形,一个在另一个上面,第二个从第一个矩形的顶边略微下降,这样第一个矩形的颜色显示为排在第二个之上。然后分别为每个矩形添加角半径。我不认为这是正确的解决方案。但是当我尝试将7dp宽度的笔划添加到圆角矩形的顶部时,我失败了。我给的笔画出现在所有边缘。

修改

这就是我想要的:

Expected Output

这就是我目前得到的:

Actual Output

3 个答案:

答案 0 :(得分:3)

        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />

        <solid android:color="#ffffff" />

        <padding
                android:left="0dp"
                android:right="0dp"
                android:top="0dp" />

        <corners android:radius="12dp" />

    </shape>
使用半径值增加曲线形状会增加

答案 1 :(得分:2)

试试这是让我知道的作品

这个工具可以帮助我,你也可以从中获得帮助

  

http://angrytools.com/android/button/

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <stroke android:width="5dp" android:color="@color/theme_color" />
        <solid android:color="@color/theme_color" />
        <corners
            android:radius="7dp"/>
        <padding android:top="7dp"/>
    </shape>
</item>

<item>
    <shape
        android:shape="rectangle">
        <stroke android:width="1dp" android:color="@color/designer_cell_background" />
        <solid android:color="@color/designer_cell_background" />

       <corners
           android:topLeftRadius="0dp"
           android:topRightRadius="0dp"
           android:bottomLeftRadius="7dp"
           android:bottomRightRadius="7dp"/> 

        <padding android:bottom="1dp"/>
    </shape>
</item>

答案 2 :(得分:0)

我认为您应该创建2个形状,黑色和红色,只是覆盖其他形状,成为您正在寻找的图像。你无法用android中的一个形状来实现这一点。

相关问题