Как установить стиль текста кнопки в селекторах? - PullRequest
24 голосов
/ 05 января 2012

Селекторы кнопок позволяют определять фон для каждого состояния кнопки, но как определить стиль текста кнопки для каждого состояния? Моя цель - отключить кнопку, когда она отключена. Поэтому я установил серый фон на состояние отключения кнопки, но единственный способ найти серый цвет текста - это динамически менять его цвет при отключении кнопки ...

Кто-нибудь может помочь?

Спасибо

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_default</item>
    <item name="android:textColor">#ffffff</item> <!-- How to specify different color for different state? -->
    <!-- more stuff -->
</style>

вытяжка / btn_default.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true"><shape>
            <solid android:color="@color/pink" />
            <corners android:radius="6dp" />
        </shape></item>
    <item><shape>
            <solid android:color="#000000" />
            <corners android:radius="6dp" />
        </shape></item>

</selector>

1 Ответ

43 голосов
/ 06 января 2012

Хорошо!

Вы можете определить цвет текста для всех 4 состояний, так же как вы определили фон для Button.Например:

имя файла: /res/color/text_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="#440000"/>
    <item android:state_focused="true" android:color="#004400"/>
    <item android:state_pressed="true" android:color="#000044"/>
    <item android:color="#444"/> 
</selector>

Возьмите этот файл в свой Button стиль, подобный следующему:

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_default</item>
    <item name="android:textColor">@color/text_color</item> <!-- Here is specified text color -->
</style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...