Как изменить цвет кнопки, когда она нажата, как в приложении викторины?
Я готов создать приложение для 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