如何在我的代码中检查我的按钮的哪个背景(我设计的各种可绘制的xml之间),以便我可以修改它?

时间:2014-06-10 00:22:22

标签: java android button

button1.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


        if (//button1 background is blue){

            changeBackgroundColorRed();

        }
        else if (//button1 background is red){

            changeBackgroundColorBlue();

        }           
    }

    }); 

changeBackgroundColor方法正常工作我只需要知道他们当前必须能够调用该方法的背景。

2 个答案:

答案 0 :(得分:1)

您可以根据您设置的颜色设置按钮的标签,并获取标签以检查其当前是蓝色还是红色。

在onCreate或类似的地方:

实例化Button时,您需要先将标记设置为初始颜色:

button.setTag("blue");

内部Onclick

if (button.getTag().equals("blue")){ //background is currently blue
    changeBackgroundColorRed();
    button.setTag("red"); //set the Tag to red cause you change the background to red
}
else if (button.getTag().equals("red")){ //background is currently red
    changeBackgroundColorBlue();
    button.setTag("blue"); //set the Tag to blue cause you change the background to blue
}

答案 1 :(得分:1)

虽然接受的答案是正确的但它看起来并不优雅(我的个人意见)。继承我的代码,它充当切换按钮。我在xm中设置了android.R.color.black的背景。更改背景需要两个步骤。首先得到当前的背景。第二,比较并改变它。这样的事情应该有效:

需要Api等级11。

public class Sample extends Activity {
Button button1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sample);
    button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(OnClickOKButton());
}

View.OnClickListener OnClickOKButton() {
    return new View.OnClickListener() {
        public void onClick(View v) {
            ColorDrawable currentColor = (ColorDrawable) button1
                    .getBackground();
            int color1 = currentColor.getColor();
            if (color1 == getResources().getColor(android.R.color.black)) {
                button1.setBackgroundColor(getResources().getColor(
                        android.R.color.darker_gray));
            } else {
                button1.setBackgroundColor(getResources().getColor(
                        android.R.color.black));
            }
        }
    };
}

}