setBackGroundColor重置视图的形状

时间:2014-12-05 09:54:10

标签: android xml view shape

我希望有圆形TextView s,我这样做是通过定义一个工作正常的形状drawable。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >
    <solid android:color="@color/White"/>
</shape>

我想要这个TextView的不同颜色,所以我在我的代码中执行此操作:

setBackgroundColor(getResources().getColor(R.color.Red));

但是它将TextView形状重置为矩形!

所以,问题总结为动态更改视图颜色的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

它变成了一个矩形,因为你正在改变视图的背景,当然它是矩形的,你应该改变纯色,但我不认为这可以通过编程方式进行

唯一的方法是这样做:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >
    <solid android:color="@color/Red"/>
</shape>

和:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
    <solid android:color="@color/green"/>
</shape>

然后:

setBackgroundResource(R.color.green);    

答案 1 :(得分:1)

您可以通过以下方式以编程方式更改视图形状的背景:

GradientDrawable drawable = (GradientDrawable)textView.getBackground();
    drawable.setColor(getResources().getColor(android.R.color.darker_gray));

答案 2 :(得分:0)

使用

setBackground(drawable);

而不是

setBackgroundColor(getResources().getColor(R.color.Red));