声明更改背景颜色

时间:2019-04-12 22:11:43

标签: java android

我有一个类型为Button的按钮,将被单击。单击此按钮后,它将颜色变为绿色。

当我单击按钮时,它的颜色变为绿色,但是当我再次单击它时,它应该回到标准颜色。

我有2个可绘制文件,名称分别为checked_list和not_checked_list。 这两个都很好。

但是当我单击按钮时,单击发生了。而且由于某种原因我无法再次单击它。

我有一个带有公共void sendMessage方法的Button字段,该方法挂接到按钮onClick上。最好只为代码中的按钮设置一个onClickEvent。

这是我到目前为止的代码。

int checked = 0;
    Button gotIt;
    gotIt = (Button)findViewById(R.id.got_it);

switch(checked) {
    case 0:
        gotIt.setBackgroundResource(R.drawable.checked_list);
        checked = 1;
        break;
    case 1:
        gotIt.setBackgroundResource(R.drawable.not_checked_list);
        checked = 0;
        break;
}

所以在这里,我希望单击它时可以在这两种颜色之间进行更改。 有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您必须跟踪checked的最后一个值。现在,您每次都将其重置为0,因为它是方法调用中的本地字段。将checked设置为类字段,它将按预期工作。

答案 1 :(得分:1)

如果您发布的所有代码都在onClick方法中,则check int始终为0,并且永远不会为1,因为它是在方法的第一行中设置的。将选中的int移到此方法之外,它应该可以工作。 动态设置点击侦听器将具有与XML布局设置相同的结果。

int checked = 0;
Button gotIt;

void sendMessage(View v) {
gotIt = (Button)findViewById(R.id.got_it);

switch(checked) {
    case 0:
        gotIt.setBackgroundResource(R.drawable.checked_list);
        checked = 1;
        break;
    case 1:
        gotIt.setBackgroundResource(R.drawable.not_checked_list);
        checked = 0;
        break;
}
}

答案 2 :(得分:0)

您可以尝试此方法

//global variables
boolean isChecked = true;
Button gotIt;

//put this in onCreate()
gotIt = (Button)findViewById(R.id.got_it);

gotIt.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    if(isChecked == true){
        gotIt.setBackgroundResource(R.drawable.checked_list);
        isChecked = false;
    }else{
        gotIt.setBackgroundResource(R.drawable.not_checked_list);
        isChecked = true;
    }

  }
});