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 に答える