1

我正在使用这样的形状属性:

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/rounded_textview">
        </TextView>

如果我在运行时使用以下方法更改颜色:

TextView.setBackgroundColor();

我使用的形状消失了。我应该怎么做才能以正确的方式改变它?还是我必须为不同的颜色生成很多形状?

谢谢。

4

3 回答 3

1

我找到了一个包含颜色和半径属性的 PaintDrawable 解决方案。但它必须在构造函数中设置颜色。所以我每次都必须在运行时新建一个 PaintDrawable 并将其设置为 TextView 的背景可绘制对象。

public static PaintDrawable getRoundedColorDrawable(int color, float radius, int padding) {
    PaintDrawable paintDrawable = new PaintDrawable(color);
    paintDrawable.setCornerRadius(radius);
    paintDrawable.setPadding(padding, padding, padding, padding);
    return paintDrawable;
}
于 2010-10-27T04:20:45.137 回答
0

您需要使用正确的 Solid 元素将背景设置为不同的形状。setBackgroundColor 我相信只是一个捷径,比如:

void setBackgroundColor(int color){
 ColorDrawable drawable = new ColorDrawable(color);
 setBackgroundDrawable(drawable);
}

所以是的,你需要一些形状:)

于 2010-10-26T18:33:43.137 回答
0

我有同样的问题

你可以使用这个方法

TextView tv = // ... //;
tv.setBackgroundResource(R.drawable.myshape);

这对我来说可以!

于 2011-06-15T10:57:15.273 回答