更改按钮状态时如何更改按钮背景

时间:2014-07-29 10:17:43

标签: android button background onclick onclicklistener

想知道如何通过设置onClickListener以编程方式更改按钮背景。

我的意思是,当我第一次按下我的按钮时,它会更改其背景图像并保存它,即使我从中释放手指。然后,如果我第二次按它,它必须再次更改背景图像。我知道我必须检查目前有什么背景,但无法理解如何做到这一点。

我尝试过使用getBackground方法但对我没用。我甚至试图创建一个带有选择器的XML文件,其中包含我的按钮的三种状态,但它只在我从按钮释放手指的那一刻起作用。

2 个答案:

答案 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
}

我认为这应该有用。