Как сменить цвет состояний AppCompatRadioButton
Есть вот такой RadioButton:
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/leftRadioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/radio_group_stroke_color"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:duplicateParentState="true" />
Мне нужно сменить цвет самого RadioButton. Знаю, что это можно сделать вот так:
android:buttonTint="@color/common_blue"
Но так меняется полностью его цвет, а мне нужно чтоб он менялся в определенном состоянии только. Пробовал вот такой вариант:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/background_engaging" android:state_checked="true" />
<item android:color="@color/transparent" android:state_checked="false" />
</selector>
Но в этом случае меняется его фон. А мне нужно именно сама иконка 
Ответы (1 шт):
Интересный вопрос :) Пришлось поковыряться, но мне кажется я нашел то что вам нужно. Есть такая штука ColorStateList. Я не очень понял где находится ваш файлик с селекторами, поэтому расскажу как я понял - создаем папку res/color/selector.xml и дальше пишем туда ваш код (дальше будет мой код, так как цветов ваших у меня нету):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorAccent" android:state_checked="true" />
<item android:color="@color/black" android:state_checked="false" />
</selector>
и дальше применяем его в xml:
android:buttonTint="@color/selector"
Кружок будет менять цвет при выборе (тут я не очень понял получилось у вас такое или нет). Есть второй вариант - программно. При этои buttonTint в xml лучше не ставить. Делаем переменную:
val colorStateList = ColorStateList(arrayOf(intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked)), intArrayOf(
Color.RED //state_unchecked
, Color.BLUE //state_checked
))
берем вашу кнопку и сеттим ей этот тинтлист:
radio.backgroundTintList = colorStateList
Вот нашел подобные вопросы, может помогут: 1, 2. Документация.
P.S. С меня +1 за интересный вопрос :D