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方法正常工作我只需要知道他们当前必须能够调用该方法的背景。
答案 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));
}
}
};
}
}