Как изменить фон кнопки при изменении состояния кнопки
-
21-12-2019 - |
Вопрос
Удивительно, как я могу программно изменить свой фон кнопки, установив 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;
}
}
.