2012-07-04 186 views
1

我正在編寫一個只有一個按鈕的程序。開始時,按鈕爲默認顏色;當點擊按鈕時,背景顏色變成紅色,然後再次點擊,其背景顏色變成默認顏色。任何關於在myButton.setOnClickListener(new OnClickListener(){}方法中編寫代碼的建議?由於將按鈕背景顏色設置爲Android SDK中的默認顏色

回答

1
// Class member variable 
private Drawable defaultDrawable; 

myButton.setOnClickListener(new OnClickListener() 
{ 
    if(defaultDrawable == null) 
    { 
     defaultDrawable = myButton.getDrawable(); 
     myButton.setBackgroundColor(Color.BLUE); 
    } 
    else 
    { 
     myButton.setBackgroundDrawable(defaultDrawable); 
     defaultDrawable=null; 
    } 

} 

您絕對可以改進邏輯以提高可讀性。

你也可以簡單地使用ToggleButton,它有兩種狀態。每個狀態都有自己的背景可繪製/顏色,您可以在xml文件中指定。不需要聽衆。

+0

事實上,我作出了多項選擇題測驗。每個選擇都是一個按鈕。我想在轉移到下一個問題時將所有按鈕的顏色更改爲其默認顏色 – DavidNg

0

你可以做簡單:

boolean isSelected = false; 
int color1 = R.color.mycolor1; 
int color2 = R.color.mycolor2; 
myButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      if(isSelected){ 
        btn.setBackgroundColor(color1); 
      } else { 
       btn.setBackgroundColor(color2); 
      } 
      isSelected = !isSelected;    
     } 
    }); 

另一種解決方案是擴展Button類,存儲您isSelected標誌作爲一個成員類。通過這種方式,您可以在需要的地方重複使用這種按鈕。

+0

我只是想重新設置爲默認的顏色 – DavidNg

0

您可以從您的當前主題的R.attr.buttonStyle像這樣得到的顏色:

public static int getAttrResId(Context context, int attrId) { 
    TypedValue outValue = new TypedValue(); 
    context.getTheme().resolveAttribute(attrId, outValue, true); 
    return outValue.resourceId; 
    }