如何在android中创建弯曲的底部边框矩形?

时间:2017-05-31 02:39:43

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

如何使用xml创建具有完美弧形底部的android drawable:

enter image description here

我试过这个xml,但结果并不完美

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#5f9c63"/>

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

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

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:3)

我认为你正在寻找这样的事情: -

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="48dp"
        android:height="48dp"
        android:viewportHeight="12"
        android:viewportWidth="12">

    <path
        android:fillColor="@android:color/holo_red_light"
        android:pathData="M 2,9 C 2,9 4,10 6,10 C 8,10 10,9 10,9 L 10,0 2,0 2,8"
        android:strokeWidth="0.1"/>

</vector>

enter image description here

使用最新的Android矢量drawable,可以提供更强大的绘图效果和更好的效果。您可以逐个像素地管理绘图。

让我附上多个选项,这样你就可以清楚了解矢量绘制中的小变化

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="48dp"
        android:height="48dp"
        android:viewportHeight="12"
        android:viewportWidth="12">

    <path
        android:fillColor="@android:color/holo_red_light"
        android:pathData="M 2,9 C 2,9.5 4,10 6,10 C 8,10 10,9.5 10,9 L 10,0 2,0 2,8"
        android:strokeWidth="0.1"/>

</vector>

enter image description here

在第二张图片中,您可以通过更改小值来查看曲线更圆。如果您真的想了解矢量绘图,请参考here,它将为您提供使用矢量绘图的丰富经验。

答案 1 :(得分:1)

角落更改为:

    <corners
    android:radius="200dp"
    android:topLeftRadius="0dp"
    android:topRightRadius="0dp"
    />

它将是完美的圆形,也许不是你想要的水平。

答案 2 :(得分:0)

您可以如下使用oval形状。

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

您可以更改leftrighttop的值来制作或多或少的曲线。