2010-09-08 78 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