2016-05-19 30 views
1

我想每次點擊按鈕時都改變android按鈕的顏色。一旦用戶點擊一個按鈕,我希望它可以改變顏色。然後,再次按下該按鈕時,顏色將恢復到之前的狀態。這裏是我的嘗試:如何更改Android按鈕顏色onClick?

private void setupFollowButton(Button button, final Boolean isClicked) { 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Boolean isClickedDummy = !isClicked; 
      if(isClickedDummy) { 
       v.setBackgroundColor(Color.parseColor("#FF0000")); 
      } else { 
       v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      } 
     } 
    }); 
} 

本來我想它,以便isClicked = !isClicked,這樣我就知道肯定,isClicked變量已發生變化,我可以改變顏色。但是,我上面的方法只是將isClicked更改爲false,我似乎無法將其更改回true。有什麼辦法可以解決這個問題嗎?任何幫助,將不勝感激。謝謝!

+0

我認爲它總是需要isClicked的默認值,每當你點擊按鈕 – Dhiraj

+0

所以每次你只會得到一個isClicked值 – Dhiraj

回答

0

試試這個:

isClicked = false; 

    private void setupFollowButton(Button button, final Boolean isClicked) { 
      button.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        if(isClicked) { 
         v.setBackgroundColor(Color.parseColor("#FF0000")); 
         isClicked = false; 
        } else { 
         v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
         isClicked = true; 
        } 
       } 
      }); 
     } 
0

你必須改變「isClickedDummy」的價值,你必須使用它作爲全球性的。

Boolean isClickedDummy; // global after the declaration of your class 

isClickedDummy = true; // in your onCreate() 

private void setupFollowButton(Button button, final Boolean isClicked) { 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if(isClickedDummy) { 
       v.setBackgroundColor(Color.parseColor("#FF0000")); 
       isClickedDummy = false; 
      } else { 
       v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
       isClickedDummy = true; 
      } 
     } 
    }); 
} 
1

我們可以將XML繪製:

<Button 
    android:id="@+id/button1" 
    android:background="@drawable/selector_xml_name" 
    android:layout_width="200dp" 
    android:layout_height="126dp" 
    android:text="Hello" /> 

selector_xml_name.xml

<?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 
0

不要忘記刪除你的按鈕的BackgroundResource如果你想改變背景顏色。

也就是說,使用方法:

btn.setBackgroundResource(0);

之後,「通常的按鍵佈局」會消失,我會告訴setBackground方法的變化。