Intereting Posts
Запросить разрешение на Runtime для Android Marshmallow 6.0 PreferenceActivity значок активной панели действий не вернется домой (в отличие от ET :) Время компиляции Android с гнездом чрезвычайно медленное Измените значок строки состояния push-сообщения на Android и IOS Как обрабатывать исключения MonoDroid во всех случаях и предотвращать крах приложения Как получить предпочтительные юниты пользователя? (Метрические (метры) или имперские (мили))? GridLayoutManager – как автоподстроить столбцы? Как я могу программно открывать / закрывать уведомления в Android? Как передать параметр веб-сервису с помощью ksoap2? Отправка действий пользователя к действиям в backstack Android: Получить представление Ссылка на пункт меню Как использовать фронтальную камеру на Samsung Galaxy S Какая длина – токен устройства iOS и Androids Как создать объект retrofit.Response во время модульного тестирования с помощью дооснащения 2 Правильный способ найти, находится ли парное Android-устройство Bluetooth в диапазоне?

Селектор цвета Android не работает с настраиваемыми атрибутами

У меня есть attrs.xml

<resources> <!-- theme specific colors --> <attr format="reference|color" name="foreground" /> <attr format="reference|color" name="background" /> </resources> 

А затем в theme.xml

 <style name="MyTheme" parent="android:Theme.Black"> <item name="android:windowNoTitle">true</item> <item name="foreground">#0000FF</item> <item name="background">#00FF00</item> </style> 

Я также создал селектор цветов с именем forground_to_background.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="?background"/> <!-- pressed --> <item android:state_focused="true" android:color="?background"/> <!-- focused --> <item android:color="?foreground"/> <!-- default --> </selector> 

Теперь я хотел бы использовать все это вместе в TextView:

 <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/forground_to_background" /> 

К сожалению, это не сработает. Вместо того, чтобы иметь красивые зеленые синие цвета, у меня есть только один цвет – красный. TextView всегда красный. Когда я меняю TextView на использование цвета «?», Цвет изменится. Также, когда я переключаю цвета с селектора «? Xxxx» на твердое значение, так как цвет «# 00f» начинает работать.

Где проблема? Что я делаю не так?

Изменить: Я считаю, что это дубликат проблемы / ошибки. Может ли ресурс селектора использовать цвет, определенный в стиле?

Edit2: Более того, когда я пытаюсь использовать это приложение TextView в приложении ListView, он падает. Он не может анализировать XML.

Solutions Collecting From Web of "Селектор цвета Android не работает с настраиваемыми атрибутами"

Вы не можете ссылаться? Attr / при выборе цветов для селектора. Что вы можете сделать, если вы хотите, чтобы цвета в каждой теме были выбраны, создайте несколько селекторов, которые ссылаются на @ color / и @ drawable /, а затем имеют «ссылку» attr, которая связывает один из селекторов с заданным стилем.

<attr name="forground_to_background" format="reference" />

Затем вам необходимо установить цвет текста как

 android:textColor="?attr/forground_to_background" 

Я считаю, что текст всегда был красным, потому что Android интерпретировал целочисленное значение attr как цвет (красный), вместо того, чтобы использовать его как поиск того, что вы на самом деле хотели.

Причина этого в том, что у меня разные Контекст. Пока раздувание Контекст знает о моей теме attrs, но к адаптеру ListView я передал ApplicationContext, который не знал об этих attrs. Теперь я не знаю, почему он не знает о них;)

Вы уверены, что применяете MyTheme к активности или текстовому виду? Другая вещь, которую вы можете попробовать, заключается в том, что вместо использования «?» Оператора в вашем forground_to_background.xml, вместо этого попробуйте использовать «@». Посмотрите, исправляет ли это вашу проблему