У меня есть три Buttons
. Я хочу, чтобы кнопка меняла цвет при нажатии, а затем, если я снова нажму кнопку, он вернется к цвету по умолчанию.Кнопка не изменит фон при нажатии
Проблема: если я нажму на первый, это изменит цвет. Однако, если я нажму на второй, он не изменит цвет. Но если я нажму на эту секунду Button
, это дополнительное время изменит цвет. Кто-нибудь знает, почему второй Button
не изменит цвет при первом нажатии?
Примечание: после отладки я заметил, что is_clicked
установлен в 1 после того, как я нажму на первый Button
. Поэтому, когда я нажимаю на второй Button
, он думает, что он уже изменил цвет и установил его обратно по умолчанию. Кто-нибудь знает, как я могу правильно установить флаг is_clicked
? Или есть что-то еще, что я должен делать?
int is_clicked = 0;
public void ButtonOnClick(View v) {
switch (v.getId()) {
case R.id.button1:
if (is_clicked == 1){
button_list.get(0).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
is_clicked--;
break;
}
if (is_clicked == 0){
button_list.get(0).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
is_clicked++;
break;
}
break;
case R.id.button2:
if (is_clicked == 1){
button_list.get(1).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
is_clicked--;
break;
}
if (is_clicked == 0){
button_list.get(1).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
is_clicked++;
break;
}
break;
case R.id.button3:
if (is_clicked == 1){
button_list.get(2).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
is_clicked--;
break;
}
if (is_clicked == 0){
button_list.get(2).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
is_clicked++;
break;
}
break;
}
}
Тогда Есть три ИНТ is_clicked нравится btn1_clicked, btn2_clicked, btn3_clicked –
гм, хорошее предложение. Однако в моей программе у меня на самом деле есть 50 кнопок. Поэтому я надеялся, что могу использовать один is_clicked для всех случаев. Я просто сократил его до трех кнопок для этого примера и простоты ... – user2456977
Его плохая практика, чтобы установить такие цвета, почему вы не используете 'Selector' вместо этого, вы можете добиться этого всего на 2 или 3 строки кодов – Pedram