无法使用setCornerRadius方法对可绘制的圆角进行绘制

时间:2018-11-22 10:04:31

标签: android

我有简单的TextView。我想设置带有圆角的简单彩色背景。

我尝试两种方法。

public static Drawable createRoundDrawable(int color, float radius) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setShape(GradientDrawable.RECTANGLE);
        drawable.setColor(color);
        drawable.setCornerRadius(radius);
        return drawable;
    }

public static Drawable createRoundDrawable(int color, float radius) {
        PaintDrawable drawable = new PaintDrawable(color);
        drawable.setCornerRadius(radius);
        return drawable;
    }

我使用createRoundDrawable方法创建可绘制对象,并将背景设置为textView,

textView.setBackground(background);

因此,背景应用于textView,但是角没有任何半径。为什么?以及如何解决?

4 个答案:

答案 0 :(得分:0)

最好使用这样的带有圆角的可绘制XML文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle">
    <!-- you can use any color you want-->
    <solid android:color="@color/colorPrimary" />
    <corners android:radius="20dp" />
</shape>

然后将文件设置为可绘制

答案 1 :(得分:0)

删除

 drawable.setShape(GradientDrawable.RECTANGLE);

应该是

   public static Drawable createRoundDrawable(int color, float radius) {
    GradientDrawable drawable = new GradientDrawable();
    drawable.setColor(color);
    drawable.setCornerRadius(radius);
    return drawable;
   }

答案 2 :(得分:0)

您可以尝试以下操作: 在drawable文件夹中创建一个新的Drawable资源文件,命名为custom_background.xml,其内容如下:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="15dp" />
    <solid
        android:color="#FFFFFF" />
</shape>

根据您的选择选择半径和颜色,并在textview的布局文件中添加背景标记 android:background =“ @ drawable / custom_background”

答案 3 :(得分:0)

尝试使用InterruptedException将拐角设置为单个拐角

setCornerRadii()