2011-07-19 154 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); 

我希望它應該工作

相關問題