0

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

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 时,它的颜色变成青色,当我按下 bt12 时,它的颜色变成青色,第一个按钮,即 bt11 进入默认状态,但下次一切都出错了,两个按钮都保持青色

4

3 回答 3

1

尝试

button.setBackgroundColor( android.graphics.Color.GREEN);
于 2012-08-24T09:18:29.810 回答
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;
    }
于 2012-08-24T09:39:57.763 回答
0

“下次一切都出错了,两个按钮都保持青色”,因为当您单击其他按钮时,您只是更改了其他按钮背景,但我猜颜色保持不变。您还必须更改背景颜色。

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;
}
于 2012-08-24T09:44:16.360 回答