Может ли ресурс селектора использовать цвет, определенный в стиле?
Я пытаюсь использовать цвет, определенный в stlyle в селекторе, но вызывает ресурс $NotFoundException.
Сначала я добавил новый атрибут attr.xml:
<resources>
<attr name="unread_background" format="color" />
</resources>
Затем я определил значение attr в styles.xml:
<style name="ThemeNoTitleBar" parent="android:Theme.NoTitleBar">
<item name="unread_background">#000000</item>
</style>
Затем я попытался использовать этот attr в определении селектора:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- other states snipped -->
<item android:state_selected="false"
android:drawable="?unread_background" />
</selector>
Наконец, в манифесте используется тема темы ThemeNoTitleBar.
Я также попытался создать цвет в color.xml и использовать его для нового attr, но это также не удается.
Мне явно не хватает чего-то, но я не уверен, что делать, чтобы исправить это. Я намерен создать несколько тем, и селектор использует цвет в текущей выбранной теме.
Ответы
Ответ 1
<item android:state_selected="false"
android:drawable="?unread_background" />
этот выше раздел неверен.
выталкиваемый только ссылается на ресурс, который можно вынести.
См. Эту ссылку. http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
Ответ 2
Кнопка Android с различными цветами фона. Посмотрите на пример. Похоже, вам это нужно.
Ответ 3
Вот что-то, что работает у меня.
attrs.xml:
<attr name="color_selection" format="reference"/>
styles.xml, как дочерний элемент главной темы:
<item name="color_selection">@color/selection_background_inverse</item>
shape_background_selected.xml в папке с возможностью переноса:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?attr/color_selection"/>
</shape>
ваш файл селектора, в моем случае: selector_background_recyclerview:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_background_selected" android:state_activated="true" />
<item android:drawable="@drawable/shape_background_selected" android:state_pressed="true" /> <!-- pressed -->
<item android:drawable="@color/transparent" /> <!-- default -->
</selector>
наконец, в вашем представлении xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/selector_recyclerview_item_background"../>