如何在XML drawable中创建一个带有两个弯曲边的矩形?

17 android drawable shapedrawable

我希望矩形的左右两侧(而不是角落)是弯曲的.或者说椭圆形的顶部和底部是直的.

我怎样才能实现这样的目标?

在此输入图像描述

Tim*_*ons 12

在textview上尝试这个,对于单个字符,它将显示一个圆圈,对于多个数字,它将自动扩展为您在上面显示的形状,但如果你严格要求上面的形状,只需在左右两侧给出更大的填充

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

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

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

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

</shape> 
Run Code Online (Sandbox Code Playgroud)


小智 7

它工作得很好!

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">

    <solid
        android:color="@color/color_red"/>
    <corners
        android:radius="10000dp" /> 
</shape>
Run Code Online (Sandbox Code Playgroud)


小智 5

我迟到了,答案一定不能完全完成(我不考虑灵活的高度),但至少如果我们提前知道dp的高度,那就是把半径作为按钮高度的一半.例如,如果高度为48dp,我们可以执行以下操作:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="#ff0000"/>
    <corners android:radius="24dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)


小智 0

尝试将边框半径设置为高度的一半。在 CSS 中,border-radius:50%创建一个椭圆,所以我猜如果它只有高度的 50% 那么你会得到类似的东西。