2011-10-21 68 views
0

我已經將一個ImageButton定義爲由選擇器(對多個不同狀態使用多個圖像)繪製。我需要在運行時改變按鈕的外觀。如何在Java中爲不同狀態設置Android ImageButton backgroundimage代碼

我知道我可以使用「setBackgroundResource」 - 但我已經將實際的背景資源作爲選擇器。我需要爲選擇器中使用的特定狀態設置圖像。

所以,我需要以某種方式獲得選擇器,然後設置圖像?如果我只是調用「setBackgroundResource」,我認爲這將取消整個選擇器。

我該如何去做這件事?

+0

可能重複的[取代選擇器圖像編程](http://stackoverflow.com/questions/4697528/replace-selector-images-programmatically) – Brad

回答

1

當按鈕改變狀態時,我簡單地更換了選擇器,如下所示。最後相當簡單。按鈕的類中:的

StateListDrawable states = new StateListDrawable(); 
    states.addState(new int[] {-android.R.attr.state_pressed},getResources().getDrawable(R.drawable.button_normal)); 
    states.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(R.drawable.button_pressed)); 

    this.setImageDrawable(states); 
    this.invalidate(); 
0

你可以得到StateListDrawable設置,可能通過鑄造或getDrawable()getBackground()然後調用selectDrawable()返回Drawable

+0

「selectDrawable」 是未記錄。假設我得到StateListDrawable - 我無法弄清楚如何從那裏設置圖像。 – Brad

+0

使用你想要選擇的drawable的數字索引 –

+0

所以在I * select * drawable之後,我該如何改變它呢? – Brad

相關問題