Android: textColor отключенной кнопки в селекторе не отображается?
Я пытаюсь сделать кнопки с селектором кнопка может иметь следующие состояния:
- Включить/Отключить
- Нажата/Не Нажата
согласно государствам, упомянутым выше. Мне нужно манипулировать кнопки:
- цвет текста
- фоновый рисунок
кнопка начинает мое отключение, поэтому она должна иметь отключенный цвет текста и отключенный фон кнопки. но я можно увидеть цвет текста по умолчанию (указанный в стиле) и без фонового изображения!
вот мой селектор button_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false"
android:state_enabled="false"
android:textColor="#9D9FA2"
android:drawable="@drawable/button" />
<item android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/button_pressed"/>
<item android:state_pressed="true"
android:state_enabled="false"
android:textColor="#9D9FA2"
android:drawable="@drawable/button"/>
<item android:state_pressed="false"
android:state_enabled="true"
android:drawable="@drawable/button"/>
</selector>
и вот моя кнопка объявление в моем макете.xml
<Button android:id="@+id/reserve_button"
android:text="@string/reserve_button"
android:layout_width="120dp"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:paddingRight="15dp"
android:layout_gravity="left"
style="@style/buttonStyle"
android:background="@drawable/button_selector" />
и, наконец, это мой стиль (где мой textColor по умолчанию установлен)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="buttonStyle">
<item name="android:textStyle">bold</item>
<item name="android:textColor">#282780</item>
<item name="android:textSize">18sp</item>
</style>
</resources>
пожалуйста, помогите!
5 ответов:
Вам также нужно создать
ColorStateList
для цветов текста, идентифицирующих различные состояния.сделать следующее:
создайте еще один XML-файл в
res\color
им что-то вродеtext_color.xml
.<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- disabled state --> <item android:state_enabled="false" android:color="#9D9FA2" /> <item android:color="#000"/> </selector>
в своем
style.xml
, поставь ссылку на этоtext_color.xml
файл выглядит следующим образом:<style name="buttonStyle" parent="@android:style/Widget.Button"> <item name="android:textStyle">bold</item> <item name="android:textColor">@color/text_color</item> <item name="android:textSize">18sp</item> </style>
это должно решить вашу проблему.
самое простое решение-установить цветовой фильтр на фоновое изображение и кнопку, как я видел здесь
вы можете сделать следующее:
if ('need to set button disable') button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); else button.getBackground().setColorFilter(null);
надеюсь, я кому-то помог...
1.Создайте папку цвета в/ res / folder и в папке цвета создайте на xml:
text_color_selector.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- disabled state --> <item android:state_enabled="false" android:color="#776678" /> <item android:color="#ffffff"/> </selector>
2.Теперь создайте XML-макет: -
<Button android:id="@+id/button_search" android:layout_width="652dp" android:layout_height="48dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="18dp" android:background="@android:color/transparent" android:text="Hello Bhaskar" android:textColor="@color/text_color_selector"/>
<Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" />
Я не вижу diabling вашей кнопки в вашем макете xml. добавьте это в макет кнопки.
android:enabled="false"
Так что ваш макет кнопки будет,
<Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:enabled="false" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" />