如何在Android中以编程方式为GradientDrawable设置TopLeftRadius和BottomLeftRadius

Sas*_*lli 4 android gradientdrawable

我有一个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>
Run Code Online (Sandbox Code Playgroud)

ak *_*cha 9

像这样

    float mRadius=3f;

    GradientDrawable drawable=new GradientDrawable();
    drawable.setShape(GradientDrawable.RECTANGLE);
    drawable.setCornerRadii(new float[]{mRadius, mRadius, 0, 0, 0, 0, mRadius, mRadius});
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请单击此处


小智 5

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

一般来说,此方法采用大小为 8 的浮点数组。

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

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

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

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

  • 对于以前没有使用过 Radii 的人来说,这是一个很好的描述性答案。要知道哪个值代表哪一边。竖起大拇指。 (2认同)