如何移除(Android)普通视图的背景

12

我有以下代码:

View view = new View(this);  
view.setBackgroundDrawable(...);  
...  

我想要去掉这个背景。
将它恢复到原来的状态。

我尝试了以下方法但都失败了:

view.setBackgroundDrawable(null);  
view.setBackgroundColor(0xFF000000);  
view.setBackgroundColor(0x00000000);  

还有其他的想法吗?


调用 invalidate() 强制重新绘制有什么不同吗? - Ben Williams
2个回答

25

view.setBackgroundDrawable(null);应该有效。

你可以尝试以下方法之一:

v.setBackgroundColor(Color.WHITE);
//or
v.setBackgroundColor(Color.parseColor("#ff0000")); //whatever color

确保将背景应用于的视图是正确的实例。


3
非常小的更新:setBackgroundDrawable(Drawable d)现在已经被弃用。请改用setBackground(Drawable d) - Louis Tsai
如果应用程序/父视图不是白色的,那么当我们使用白色时,我们会更改UI。 - Mahmoud Mabrok

0
那是因为view.setBackgroundColor(int)期望的是颜色资源而不是“实际”的整数值。尝试在您的colors.xml中声明它,参见this。然而,我不太确定您所说的“删除”背景是什么意思。如果您想要它具有原始值,则建议您将原始可绘制对象(使用getBackground())存储在某个地方。否则,由于Android中大多数默认背景都是Drawable资源(选择器),而不是简单的颜色,因此您很可能会失去格式。

view.setBackgroundColor(int) 接受 ARGB 颜色,而不是资源。 - Lawrence Kesteloot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接