8

問題に直面しています。

私は2つのButtonオブジェクトを持っています。

ButtonA ButtonB

要件:-

ボタンを押すたびButtonA に色が変更され、クリックするまで同じままになりますButtonB

クリックした後、ButtonB同じことが機能するはずです。ButtonA

if (v == btn)
{
    btn.setBackground(mActivity.getResources().getDrawable(R.drawable.button_color_chnager));
}

XML:

<item android:state_focused="true" android:state_pressed="true" 
            android:drawable="@drawable/ic_launcher" /> 
4

6 に答える 6

11

これを試して:

final Button buttonA = (Button) findViewById(R.id.ButtonA);
final Button buttonB = (Button) findViewById(R.id.ButtonB);

buttonA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
buttonB.setBackgroundColor(Color.CYAN);
}
});

buttonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
buttonA.setBackgroundColor(Color.RED);
}
});

また

drawables フォルダーに selector.xml を作成し、その中に以下のコードをコピーします。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
  <item android:state_focused="true" android:state_pressed="true" 
    android:drawable="@drawable/focused_pressed" /> 
  <item android:state_focused="false" android:state_pressed="true" 
    android:drawable="@drawable/pressed" /> 
  <item android:drawable="@drawable/normal" /> 
</selector>

レイアウトのボタン A のこのコードをコピーします

<Button
    android:id="@+id/buttonA"
    style="@drawable/test"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="Button A" />
于 2013-06-19T11:20:24.490 に答える
5

以下のコードを使用してください..

Boolean isOnePressed = false, isSecondPlace = false;
b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                isOnePressed = true;
                b1.setBackgroundColor(Color.BLUE);
                if (isSecondPlace) {
                    b2.setBackgroundColor(Color.WHITE);
                    isSecondPlace = false;
                }

            }
        });
        b2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                b2.setBackgroundColor(Color.BLUE);
                isSecondPlace = true;
                if (isOnePressed) {
                    b1.setBackgroundColor(Color.WHITE);
                    isOnePressed = false;
                }

            }
        });

それが役に立てば幸い...

于 2013-06-19T11:26:25.787 に答える
3

私はコードの下でテストされていません。しかし、これはあなたに役立つと思います。

private Drawable defaultDrawableA;
private Drawable defaultDrawableB;
private Button buttonA , buttonB;


buttonA = (Button) findViewById(R.id.buttonA);
buttonB= (Button) findViewById(R.id.buttonB);
    buttonA .setOnClickListener(this);
    buttonB.setOnClickListener(this);


@Override
public void onClick(View v) {
    if (v == buttonA)

if(defaultDrawableA== null)
{
    defaultDrawableA=buttonA.getDrawable();
    buttonA.setBackgroundColor(Color.BLUE);
}
else
{
    buttonA.setBackgroundDrawable(defaultDrawableA);
    defaultDrawableA=null;
}
    else if (v == buttonB)

if(defaultDrawableB == null)
{
    defaultDrawableB=buttonB.getDrawable();
    buttonB.setBackgroundColor(Color.RED);
}
else
{
    buttonB.setBackgroundDrawable(defaultDrawableB);
    defaultDrawableB=null;
}

    return;
}
于 2013-06-19T11:23:04.677 に答える