2017-03-17 38 views

回答

0

嘗試:

android:state_pressed="true" 

事情是這樣的:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/btn_led_on" android:state_pressed="true"/> 
    <item android:drawable="@drawable/btn_led_off" android:state_pressed="false"/> 

</selector> 

編輯 對於您的要求使用

boolean isButtonClicked=false; 
Button button = (Button) findViewById(R.id.main_button); 
    button.setOnClickListener(new OnClickListener() { // Then you should add add click listener for your button. 
     @Override 
     public void onClick(View v) { 
      if (v.getId() == R.id.main_button) { 
       isButtonClicked = !isButtonClicked; // toggle the boolean flag 
       v.setBackgroundResource(isButtonClicked ? R.drawable.btn_led_on : R.drawable.btn_led_off); 
      } 
     } 
    }); 
+0

是的我試過了,只有state_pressed可以工作。但我希望通過點擊按鈕來改變背景不按 – Jevis

+0

@Jevis檢查我編輯的答案 –

+0

我用你的方法可以,但爲什麼選擇器不工作@Kiran Benny Joseph – Jevis

0

你的選擇應該是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_normal"></item> 
</selector>