onclick后切换按钮的颜色

时间:2012-08-24 09:04:53

标签: android

我有几个按钮。我希望当我点击任何按钮时,它的颜色应该改变,其他按钮应该保持不变。下次点击其他按钮的时候,它的颜色应该改变,其他按钮保持不变(或者通过defalut状态),等等。 这是我的代码

switch(v.getId())
{
case R.id.bt1:
bt11.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple);
bt12.setBackgroundResource(android.R.drawable.btn_default);
break;

case R.id.bt2:
bt12.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple);
bt11.setBackgroundResource(android.R.drawable.btn_default);
break;
}

但是当我第一次按下按钮bt11时它的颜色变成了CYAN,当我按下bt12然后它的颜色变成CYAN并且第一个按钮即bt11进入默认状态但下次一切都出错了两个按钮都保留在CYAN颜色

3 个答案:

答案 0 :(得分:1)

button.setBackgroundColor( android.graphics.Color.GREEN);

答案 1 :(得分:0)

试试这个 您的代码中的问题是您在按钮的bg属性上放置了一个颜色过滤器,即使您更改了bg而不是在imgand上设置过滤器,它仍将保留为bg fr btn

 switch(v.getId())
    {
    case R.id.bt1:
        Drawable d=b11.getBackground();
        d.setColorFilter(Color.CYAN,PorterDuff.Mode.MULTIPLY);

        b11.setBackgroundDrawable(d);
        b12.setBackgroundResource(android.R.drawable.btn_default);
    break;

    case R.id.bt2:
    //b2.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.MULTIPLY);
    Drawable dd=b12.getBackground();
    dd.setColorFilter(Color.CYAN,PorterDuff.Mode.MULTIPLY);

    b12.setBackgroundDrawable(dd);
    b11.setBackgroundResource(android.R.drawable.btn_default);
    break;
    }

答案 2 :(得分:0)

“下次一切都出错了,两个按钮都保留在CYAN颜色中”,因为当你点击其他按钮时,你只是改变了其他按钮背景,但颜色保持不变我猜。你也必须改变背景颜色。

switch(v.getId())
{
case R.id.bt1:
bt11.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple);
bt12.setBackgroundResource(android.R.drawable.btn_default);
bt12.setBackgroundColor(Black);
break;

case R.id.bt2:
bt12.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple);
bt11.setBackgroundResource(android.R.drawable.btn_default);
bt11.setBackgroundColor(Black);
break;
}