Как изменить цвет кнопки, когда она нажата, как в приложении викторины?

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

3 ответа

Вы можете попробовать это:

someButton.setBackgroundColor(Color.RED); // Wrong option
someButton.setBackgroundColor(Color.GREEN); // Correct option

Обратитесь к View#setBackgroundColor(int) и Color.
Кнопка - это подкласс View.

Вы можете использовать комбинацию android:state_selected и android:state_enabled свойства StateListDrawable для достижения эффекта через XML.

Ваш фон кнопки может быть определен как нарисованный ниже

<selector>
    <item android:drawable="@drawable/default_button_background" />
    <item android:state_selected="true" android:state_enabled="true" android:drawable="@drawable/correct_answer_background" />
    <item android:state_selected="true" android:state_enabled="false" android:drawable="@drawable/wrong_answer_background"
</selector>

и в вашем коде. По нажатию кнопки добавьте этот код

boolean isAnswerCorrect = //your logic to check if answer is correct or not
clickedButton.setEnabled(isAnswerCorrect);

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

Создайте папку с именем Drawable под res и поместите туда эти два файла изображений, затем назовите их, как показано ниже, как, R.drawable.filename,

buttonCheckAnswerObject = (Button)findViewById(R.id.buttonCheckAnswer);

buttonCheckAnswerObject.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(final View v) {
          boolean userAnswer;//check if correct
          if (userAnswer){
               v.setBackgroundResource(R.drawable.button_correct_answer_color);
          }
          else {
               v.setBackgroundResource(R.drawable.button_false_answer_color);
          }

     }
});

    enter code here
Другие вопросы по тегам