Подтвердить что ты не робот

Android: переключить цвет текста ToggleButton

Чтобы создать пользовательский ToggleButton, я определил новый стиль в /res/values/styles.xml:

<style name="myToggleButton">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#000000</item>
    <item name="android:background">@drawable/my_toggle_button</item>
</style>

а затем я использую селектор, чтобы указать, как выглядят состояния кнопок в /res/drawable/my_toggle_button.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <shape>
            [...]
        </shape>
    </item>
    <item android:state_checked="false"
        <shape>
            [...]
        </shape>
    </item>
</selector>

Как изменить эту настройку для переключения цвета текста кнопки при изменении состояния?

4b9b3361

Ответ 1

Создайте аналогичный список состояний для цветов текста, которые вы хотите, и поместите его в res/color, например.

res/color/toggle_color.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="#070" />
    <!-- Default State -->
    <item android:color="#A00" />
</selector>

Затем установите этот ресурс как цвет текста кнопки:

<item name="android:textColor">@color/toggle_color</item>

P.S., хорошая практика состоит в том, чтобы последний элемент в селекторе не имел прикрепленных флагов состояния (то есть состояние по умолчанию), а не определял его с инверсией вышеуказанных состояний.