Как изменить фон кнопки при изменении состояния кнопки

StackOverflow https://stackoverflow.com//questions/25013003

Вопрос

Удивительно, как я могу программно изменить свой фон кнопки, установив onClickListener.

Я имею в виду, что когда я в первую очередь нажал мою кнопку, она меняет свое фоновое изображение и сохранить его, даже если я отпускаю пальцем от него.И тогда, если я нажимаю его во второй раз, он должен снова изменить фоновое изображение.Я знаю, что я должен проверить, на каком фоне есть в данный момент, но не может понять, как это сделать.

Я пробовал использовать метод getBackground, но это было не полезно для меня.Я даже попытался создать файл XML с селектором, который содержит три состояния моей кнопки, но он работал только до того момента, когда я отпустил палец от кнопки.

Это было полезно?

Решение

Вы можете иметь глобальную переменную, хранящую фон 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
}
.

Я думаю, что это должно работать.

Другие советы

Попробуйте так.

Вы знаете, сколько у вас есть.Используйте переменную int (LET SEENTSTATE), чтобы сохранить состояние кнопки (Ex. Состояния 1,2,3. Max_state= 3).

Вкл. Нажмите Просто поменяйте состояние и замените фона в зависимости от текущего значения переменной кнопки.

 @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;
        }
    }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top