Я разрабатываю приложение для викторины. Будет один вопрос и 4 варианта (переключатели). Если пользователь выберет какой-либо неправильный ответ, тогда я хочу повернуть этот цвет переключателя на красный. Как это сделать?
Изменение цвета переключателя
Ответ 1
Просто пришел, чтобы показать что-то, что действительно поможет мне в этом:
Все говорят о том, как использовать оттенок и как использовать colorAccent, но это не будет работать на телефонах с API менее 21.
Итак, реальное исправление этого или, по крайней мере, помогло мне использовать android.support.v7.widget.AppCompatRadioButton
вместо RadioButton
С этим на вашем макете вы можете использовать:
app:buttonTint="@color/yourColor"
не получая предупреждений или проблем о совместимости представления.
И не забывайте о добавлении:
xmlns:app="http://schemas.android.com/apk/res-auto"
для родителя макета или вашего виджета.
Изменить:
@aselims упоминает комментарий, что там не buttonTint
в пространстве имен app
.
Итак... вот мой нынешний стиль для этого решения:
<style name="MRadioButton.Purple" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="colorAccent">@color/youColor</item>
<item name="colorControlHighlight">@color/yourColor</item>
<item name="android:colorPressedHighlight">@color/yourColor</item>
<item name="colorPrimaryDark">@color/yourColor</item>
<item name="colorPrimary">@color/yourColor</item>
<item name="colorControlActivated">@color/yourColor</item>
</style>
Ответ 2
Самое быстрое, что нужно сделать, - установить buttonTint
на нужный цвет:
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio"
android:checked="true"
android:buttonTint="@color/your_color"/>
В вашем values/colors.xml
поставьте свой цвет в этом случае красноватым:
<color name="your_color">#e75748</color>
Результат:
Как указано @smashing, это будет работать только на уровне API >= 21
Ответ 3
Чтобы программно изменить цвет кнопки RadioButton и работает на уровне api < 21, следует использовать AppCompatRadioButton
вместо RadioButton
:
(иначе будет предупреждать setbuttontintlist requrie api level 21
)
import android.support.v7.widget.AppCompatRadioButton;
AppCompatRadioButton radioButton = new AppCompatRadioButton(getActivity());
radioButton.setSupportButtonTintList(
ContextCompat.getColorStateList(getActivity(),
R.color.single_choice_state_list));
single_choice_state_list.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/single_choice_checked"></item>
<item android:state_checked="false" android:color="@color/single_choice_unchecked"></item>
</selector>
Ответ 4
Этот сайт действительно хорош для настройки компонентов Android в целом: android-holo-colors
Просто выберите радиокнопку, сделайте цвет красным, загрузите и используйте его в своем проекте!
Ответ 5
Создайте селектор, который можно вырезать для вас с помощью переключателя в папке drawable/radio_button.xml и укажите все необходимые состояния для вашего переключателя.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:state_window_focused="false"
android:drawable="@drawable/radio_button_on" />
<item
android:state_checked="false"
android:state_window_focused="false"
android:drawable="@drawable/radio_button_off" />
<item
android:state_checked="true"
android:state_pressed="true"
android:drawable="@drawable/radio_button_on_pressed" />
<item
android:state_checked="false"
android:state_pressed="true"
android:drawable="@drawable/radio_button_off_pressed" />
<item
android:state_checked="true"
android:state_focused="true"
android:drawable="@drawable/radio_button_on_selected" />
<item
android:state_checked="false"
android:state_focused="true"
android:drawable="@drawable/radio_button_off_selected" />
<item
android:state_checked="true"
android:drawable="@drawable/radio_button_on" />
<item
android:state_checked="false"
android:drawable="@drawable/radio_button_off" />
</selector>
И укажите андроид: button = "@drawable/radio_button" для вашего переключателя
Не забудьте добавить соответствующие изображения для разных состояний переключателя.
Ответ 6
//get radio button reference from layout
RadioButton raPrivate = (RadioButton) layout.findViewById(R.id.radioPrivate);
//parse textColor from string hex code
int textColor = Color.parseColor("#000000");
//set textcolor to radioButton
raPrivate.setButtonTintList(ColorStateList.valueOf(textColor));
u может только распознавать объект ColorStateList как цвет для radioButton, если u использует valueOf, он будет использовать только один цвет.
Надеюсь, что это поможет: >
Ответ 7
Вы можете выполнить обратный совместимый оттенок на переключателе
XML:
<android.support.v7.widget.AppCompatRadioButton
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/red"/>
Или java:
CompoundButton button = (CompoundButton) findViewById(R.id.radioButton);
CompoundButtonCompat.setButtonTintList(button, ContextCompat.getColorStateList(this, R.color.red));
Ответ 8
Создайте образ! и поместите его в свои папки с возможностью рисования. вызовите его,
RadioButton rb=(RadioButton) findViewById(R.id.radioButton1);
rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
rb.setButtonDrawable(R.drawable.'you image here');
}
});
}
Ответ 9
Надеюсь, что это поможет.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
radioButton.setButtonTintList(ContextCompat.getColorStateList(mContext, R.color.colorGris));
}else {//Do something if you have a lower version}
Для меня это работает.
Ответ 10
добавьте эти два свойства в свой стиль, который вы используете в манифесте с действием
<item name="colorControlNormal">@color/grey</item> // for state released color
<item name="colorAccent">@color/blueLogo</item> //for state pressed color