2011-07-19 99 views
3

你好,我有一个imagebutton linearButton它有一个XML背景可绘制集。我想有条件地替换代码中的背景,但它从来没有发生过!Android imagebutton以编程方式更改?

Drawable replacer = getResources().getDrawable(R.drawable.replacementGraphic); 
linearButton.setBackgroundDrawable(replacer); 

这似乎是无效的,是有一个imagebuttons,我有他们改变视觉之前所说的“重装”的功能?

+2

你做什么应该工作。向我们展示更多代码,以便我们可以为您提供帮助。 – Gallal

+0

嘿,谢谢它正在工作,我的意思是消除这个问题,但增加的答案也有帮助! – CQM

回答

7

invalidate()方法将迫使任何视图的重绘:

Drawable replacer = getResources().getDrawable(R.drawable.replacementGraphic); 
linearButton.setBackgroundDrawable(replacer); 
linearButton.invalidate(); 

参考参见here

+0

是的,你想使视图无效以迫使Android重新绘制它 –

3

“正确”的答案应该更新。

setBackgroundDrawable()在API弃用16

setBackground()在API 16

添加了一个更好的答案可能是:

int replace = R.drawable.my_image; 
myButton.setBackgroundResource(replace); 
myButton.invalidate(); 

或者只是:

myButton.setBackgroundResource(R.drawable.my_image); 
myButton.invalidate(); 

将工作从API级别1-18

0

试试这个

linearButton.setImageResource(R.drawable.replacementGraphic); 

我希望它应该工作

相关问题