Как поменять цвет кнопки в андроид, и вернуть обратно дефолтный цвет если нажата другая кнопка?

Как мне поменять цвет нажатой кнопки и вернуть его если нажата другая?

В этом коде я устанавливаю состояние кнопок, которое дальше использую. Но имеено в этом коде мне надо понять, как поменять цвет кнопки в зависимости от того, какую нажал юзер.

Нажата кнопка 1 - изменила свой серый цвет на зеленый. Потом юзер нажал кнопку 2 - кнопка 2 стала зеленой, а кнопка 1 стала снова серой.

Пробовал селекторамие но не получилось, возможно не правильно что-либо делал, при запуске приложения у меня открывался код xml-файла, где были селекторы прописаны, а приложение не запускалось.

Кнопки у меня прописаны так androidx.appcompat.widget.AppCompatButton

public void onClickVibro(View view) {
        int id = view.getId();
        if (id == R.id.buttonVib1) {
            state = 1;
        } else if (id == R.id.buttonVib2) {
            state = 2;
        } else if (id == R.id.buttonVib3) {
            state = 3;
        } else if (id == R.id.buttonVib4) {
            state = 4;
        }
    }

Ответы (1 шт):

Автор решения: Mars

Для изменения цвета элементов управления используйте Button.setBackgroundColor(myColor); , где myColor-число в типе int, хранящий значения ARGB, для его получения используйте myColor = Color.argb(Alpha, Red, Green, Blue); Пример:

View.OnClickListener OCL1= v-> { 
Button1.setBackgroundColor(Color.rgb( 100, 100, 100));  
Button2.setBackgroundColor(Color.rgb( 0, 200, 0)); 
};
View.OnClickListener OCL2= v-> { 
Button2.setBackgroundColor(Color.rgb( 100, 100, 100));  
Button1.setBackgroundColor(Color.rgb( 0, 200, 0)); 
};
Button1.setOnClickListener(OCL1);
Button2.setOnClickListener(OCL2);
→ Ссылка