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

Может ли ресурс селектора использовать цвет, определенный в стиле?

Я пытаюсь использовать цвет, определенный в 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, но это также не удается.

Мне явно не хватает чего-то, но я не уверен, что делать, чтобы исправить это. Я намерен создать несколько тем, и селектор использует цвет в текущей выбранной теме.

4b9b3361

Ответ 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"../>