5

我有一个 ShapeDrawable 。我想以编程方式设置 CornerRadius (TopLeftRadius & BottomLeftRadius)。

下面是我的xml

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

<item android:top="5dp"
    android:bottom="5dp">

    <shape android:shape="rectangle">
        <corners android:topLeftRadius="20dp"
            android:bottomLeftRadius="20dp"/>

        <solid android:color="#A2D368"/>
    </shape>
</item>
</layer-list>
4

3 回答 3

15

这样做;

    float mRadius=3f;

    GradientDrawable drawable=new GradientDrawable();
    drawable.setShape(GradientDrawable.RECTANGLE);
    drawable.setCornerRadii(new float[]{mRadius, mRadius, 0, 0, 0, 0, mRadius, mRadius});

更多详情请点击这里

于 2017-02-21T12:49:04.223 回答
3

GradientDrawable 的使用setCornerRadii (float[] radii)方法。

通常,此方法采用大小为 8 的浮点数组。

对于 4 个角中的每一个,需要 x 半径和 y 半径 2 个半径值。

角在浮点数组中按左上角、右上角、右下角、左下角排序。

由于您要求左上角和左下角半径,因此您需要将半径值设置为浮点数组的前 2 个和后 2 个索引。

样品-> setCornerRadii(new float[]{50, 50, 0, 0, 0, 0, 50, 50})

于 2021-06-15T06:53:50.030 回答
0
<shape android:shape="rectangle">
    <corners
        android:topLeftRadius="@dimen/button_radius"
        android:topRightRadius="0dp"
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="@dimen/button_radius"/>
    <stroke
        android:width="@dimen/button_stroke_width"
        android:color="@color/colorBlack"/>
    <gradient
        android:angle="-90"
        android:startColor="@color/colorLightPurple"
        android:endColor="@color/colorDeepPurple" />
    </shape>
于 2017-02-21T12:47:56.790 回答