Как ссылаться на атрибут color в drawable?

Я хотел бы сделать простую вещь: Определите drawable, у которой есть тот же цвет фона, что и цвет фона, заданный с помощью состояния системы. Я делаю это так: res / drawables / my_drawable.xml:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_selected="true"> <color android:color="?android:attr/colorPressedHighlight"/> </item> <item android:state_selected="false"> <color android:color="@color/section_list_background"/> </item> </selector> 

Я всегда получаю:

 java.lang.UnsupportedOperationException: Cant convert to color: type=0x2 

Любые подсказки?

С уважением

Solutions Collecting From Web of "Как ссылаться на атрибут color в drawable?"

Возможно, вам понадобится сделать следующее, чтобы исправить вашу проблему:

1) Определите 2 цвета для каждой темы в вашем файле цветов:

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="my_color_dark">#ff33B5E5</color> <color name="my_color_light">#ff355689</color> </resources> 

2) Создать файл res / values ​​/ attrs.xml с содержимым:

 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="my_color" format="reference" /> </resources> 

3) Предполагая, что у вас есть 2 темы в styles.xml ( Theme.dark и Theme.light ), определите:

 <style name="Theme.dark" parent="@style/Theme.Sherlock"> <item name="my_color">@color/my_color_dark</item> </style> <style name="Theme.light" parent="@style/Theme.Sherlock.Light"> <item name="my_color">@color/my_color_light</item> </style> 

4) Используйте цвет в растягиваемом:

 <color android:color="?attr/my_color"/> 

Надеюсь, это должно решить вашу проблему.

Просто создайте новый файл color.xml в файле /res/values/color.xml и /res/values/color.xml в него следующий код:

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="editcolor">#ff99ffff</color> <color name="transparent">#00000000 </color> </resources> 

Вы не можете использовать ?attr Attr в доступных ресурсах xml, потому что ресурс, созданный aapt во время компиляции. Ресурсы Attr, используемые для динамического подключения во время выполнения

Вы пытаетесь преобразовать атрибут в цвет. Атрибуты – это свойства, обычно прикрепленные к представлению, которые затем могут быть написаны с использованием темы.

Вам нужно указать ресурс цвета в вашем xml. Вы можете сделать это, создав свой собственный ресурс:

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPressedHighlight">#FF8800</color> </resources> 

Затем сделайте следующее:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_selected="true"> <color android:color="@color/colorPressedHighlight"/> </item> <item android:state_selected="false"> <color android:color="@color/section_list_background"/> </item> </selector> 

Или вы можете ссылаться на цвет, доступный в ресурсах Android:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_selected="true"> <color android:color="@android:color/holo_orange_light"/> </item> <item android:state_selected="false"> <color android:color="@android:color/holo_blue_dark"/> </item> </selector> 

Попробуйте этот способ поместить цвет в android: можно сделать как ниже

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="?android:attr/colorPressedHighlight"/> <!-- pressed --> <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused --> <item android:drawable="@color/section_list_background"/> <!-- default --> </selector> 

или

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:color="?android:attr/colorPressedHighlight"/> <item android:state_enabled="false" android:color="@color/section_list_background" /> <item android:color="@color/testcolor5"/> </selector>