反向按钮背景颜色为Android SDK中的默认颜色

时间:2012-07-04 18:21:15

标签: android button sdk colors

我只用一个按钮编写程序。开始时,按钮是默认颜色;当点击按钮时,它的背景颜色变为红色,然后再次点击,其背景颜色变为默认颜色。有关使用myButton.setOnClickListener(new OnClickListener(){}方法编写代码的任何建议吗?感谢

3 个答案:

答案 0 :(得分: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文件中指定。不需要听众。

答案 1 :(得分: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标志存储为成员类。通过这种方式,您可以在任何需要的地方重复使用此类按钮。

答案 2 :(得分: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;
  }