select器资源可以使用样式中定义的颜色吗?

我试图在select器中使用stlyle中定义的颜色,但是它会导致Resources $ NotFoundException。

首先我给attr.xml添加了一个新的属性:

<resources> <attr name="unread_background" format="color" /> </resources> 

然后我在styles.xml中定义了attr值:

 <style name="ThemeNoTitleBar" parent="android:Theme.NoTitleBar"> <item name="unread_background">#000000</item> </style> 

然后我尝试在我的select器定义中使用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样式主题。

我也尝试在colors.xml中创build一个颜色,并使用新的属性,但也失败了。

我明显错过了一些东西,但不知道该怎么做来解决这个问题。 我的意图是创build多个主题,并让select器使用当前选定的主题中的颜色。

Solutions Collecting From Web of "select器资源可以使用样式中定义的颜色吗?"

 <item android:state_selected="false" android:drawable="?unread_background" /> 

这个部分是错误的。

drawable只参考drawable资源。 请看这个链接。 http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

具有不同背景颜色的Androidbutton查看示例。 看起来你需要这个。

这是一些东西,这是我的作品。

attrs.xml:

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

styles.xml,作为主题的子元素:

 <item name="color_selection">@color/selection_background_inverse</item> 

drawable文件夹中的shape_background_selected.xml:

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="?attr/color_selection"/> </shape> 

你的select器文件,在我的情况: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"../>