2010-09-08 105 views
4

我試圖恢復視圖的背景顏色。重置視圖的背景顏色

我有幾個可選擇的視圖。當用戶點擊這些觀點的一個,下面的代碼被執行,查看變成黃色:

View newSelection, previousSelection; 

... 

if(previousSelection != null) { 
    previousSelection.setBackgroundColor(Color.BLACK); // problem here 
} 
newSelection.setBackgroundColor(Color.YELLOW); 

不過,我想重置先前選擇查看的顏色。但是,我不知道它是哪種顏色(我在上面的代碼中將它設置爲Color.BLACK)。我無法在View類中找到getBackgroundColor或類似的方法。如果我有它,我可以保存以前的顏色,並在選擇新視圖時將其放回原處。

+0

如果你只是想使用父母的背景,你可以刪除整個孩子的背景:view.setBackgroundResource(0); – 2015-01-20 19:25:21

回答

0

您可以嘗試將以前的顏色設置爲視圖的標記。

例如

View newSelection, previousSelection; 

newSelection.setTag(Color.Green); 
previousSelection.setTag(Color.Black); 

if(previousSelection != null) { 
    previousSelection.setBackgroundColor((int)previousSelection.getTag()); 
} 
newSelection.setBackgroundColor(Color.YELLOW); 

我沒有嘗試過的代碼,如果有一個錯誤,但是,如何實現流量是存在的。

+0

問題是我不知道視圖的原始顏色。 – MyNameIsZero 2010-09-09 18:33:21

+0

你是不是設置視圖原始顏色的人? – capecrawler 2010-09-13 00:06:35

+0

我沒有設置原始顏色,因爲當沒有指定顏色時,原始顏色是android使用的默認顏色。 – MyNameIsZero 2010-09-13 16:39:59

5

use View。 getBackground(),它返回視圖的當前'Drawable'背景,然後可以在View中使用它。 setBackgroundDrawable()

View theView; 
Drawable originalBackground; 

... 

originalBackground = theView.getBackground(); 

theView.setBackgroundColor(Color.YELLOW); 

... 
theView.setBackgroundDrawable(originalBackground); 
+0

請注意,在較新版本的Android中,設置背景顏色可能會改變原始背景ColorDrawable,所以您應該使用'theView.setBackground(new ColorDrawable(Color.YELLOW))'代替 – crizzis 2015-08-07 21:11:32