2014-12-05 34 views
1

我想要有圓形TextView s,我正在通過定義可正常工作的形狀drawable來完成此操作。setBackGroundColor重置視圖的形狀

<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的形狀爲矩形!

所以,這個問題總結到什麼是動態改變視圖顏色的正確方法?

+0

是[R .color.Red您的自定義XML? – 2014-12-05 09:56:06

+0

@MysticMagic:不,這是一個簡單的顏色值 – 2014-12-05 10:06:25

回答

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);  
+0

我自己來了,但如果有很多顏色,你必須創建20個XML文件。這違背了DRY原則! – 2014-12-05 10:04:54

0

使用

setBackground(drawable); 

而不是

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

你可以做這樣的改變通過編程視圖的形狀的背景:

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