想知道如何通过设置onClickListener
以编程方式更改按钮背景。
我的意思是,当我第一次按下我的按钮时,它会更改其背景图像并保存它,即使我从中释放手指。然后,如果我第二次按它,它必须再次更改背景图像。我知道我必须检查目前有什么背景,但无法理解如何做到这一点。
我尝试过使用getBackground
方法但对我没用。我甚至试图创建一个带有选择器的XML文件,其中包含我的按钮的三种状态,但它只在我从按钮释放手指的那一刻起作用。
答案 0 :(得分:1)
试试这样。
你知道你有多少个州。使用int变量(以免说按钮状态)来保存按钮状态(例如状态1,2,3.MAX_STATE = 3)。
单击只需更改状态并替换背景,具体取决于当前的buttonState变量值。
@Click(R.id.button_action)
void onButtonActionClicked() {
buttonState = ++buttonState % BTN_STATE_MAX;
switch (buttonState){
case BTN_SAVE:
button.setBackgroundResource(R.drawable.button_save);
break;
case BTN_LOAD:
button.setBackgroundResource(R.drawable.button_load);
break;
case BTN_DELETE:
button.setBackgroundResource(R.drawable.button_delete);
break;
}
}
答案 1 :(得分:1)
你可以有一个存储背景int的全局变量:
private int backgroundNumber = 0;
然后,在onClick()中,您可以执行以下操作:
backgroundNumber++;
switch (backgroundNumber % numberOfBackgrounds) { // numberOfBackgrounds is a constant of how many backgrounds there are
case 1:
button.setBackgroundResource(R.drawable.background1);
break;
// Do cases for all the backgrounds
}
我认为这应该有用。