2012-07-04 58 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; 
    }