Установите цветной текст RadioButton, проверенный в RadioGroup с пользовательской формой

У меня проблема, я не могу изменить цвет текста на RadioButton, если он выбран. У меня есть это в activity.xml

<RadioGroup
    android:id="@+id/activity_onsite"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" >
    <RadioButton
        android:id="@+id/onsite_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:background="@drawable/toggle_btn"
        android:padding="10dp"
        android:text="office"

        android:button="@null"/>

    <RadioButton
        android:id="@+id/onsite_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/toggle_btn"
        android:text="clients"
        android:padding="10dp"
        android:button="@null"/>
</RadioGroup>

в моих ресурсах @drawable/togglebtn у меня есть

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/radio_btn_selected" android:state_checked="true" />
   <item android:drawable="@drawable/radio_btn_regular"    android:state_checked="false"/>
</selector>

И, наконец, в моем @drawable/radio_btn_selected

<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
    android:radius="5dp" />
<solid
    android:color="#39b3d7"

    />
<stroke
    android:width="1dp"
    android:color="#269abc" />
</shape>

И в @drawable/radio_btn_regular

<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
    android:radius="5dp" />
<solid
    android:color="#fff"

     />
<stroke
    android:width="1dp"
    android:color="#269abc" />
</shape>

Могу ли я изменить цвет текста в radio_btn_selected.xml?


person LorenzoBerti    schedule 25.07.2016    source источник
comment
вы можете создавать собственные селекторы цвета и устанавливать цвет текста с помощью этого   -  person lal    schedule 25.07.2016
comment
stackoverflow.com/a/3565624/3092341 это может вам помочь   -  person lal    schedule 25.07.2016


Ответы (2)


Вы не можете установить атрибуты background и textColor с помощью одного селектора. Создайте новый селектор для textColor, скажем, radio_text_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#39b3d7"/>
    <item android:state_checked="true" android:color="#39b3d7"/>
    <item android:color="#ff8a8a"/>
</selector>

Установите атрибут textColor RadioButton

android:textColor="@drawable/radio_text_selected"
person sJy    schedule 25.07.2016
comment
Это работает как шарм, большое спасибо. Вы не можете установить атрибуты background и textColor с помощью одного селектора. Эта концепция решает и многие другие проблемы. - person MarsAndBack; 19.03.2017

@sJy спасибо. Это работает. Я добавил radio_text_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_checked="true" android:color="#f3f3"/>
   <item android:state_checked="false" android:color="#000"/>
</selector>

и на моем RadioButton в Activity.xml:

<RadioGroup
    android:id="@+id/activity_onsite"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" >
    <RadioButton
        .
        .
        android:textColor="@drawable/radio_text_selected"/>
    <RadioButton
        .
        .
        android:textColor="@drawable/radio_text_selected"/>
</RadioGroup>
person LorenzoBerti    schedule 25.07.2016