我试图在选择器中使用在stlyle中定义的颜色,但它导致了资源$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>
然后,我尝试在选择器定义中使用该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中创建一个颜色,并让它使用新的attr,但同样失败了。
我显然遗漏了一些东西,但不确定该怎么做才能修复它。我的意图是创建多个主题,并让选择器使用当前所选主题中的颜色。
发布于 2012-01-27 04:17:48
<item android:state_selected="false"
android:drawable="?unread_background" />
上面这一节是错误的。
drawable仅引用可绘制的资源。请参阅此链接。http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
发布于 2017-04-18 22:03:23
这里有一些东西,对我是有效的。
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"../>
发布于 2010-09-21 14:10:59
Android button with different background colors看一下这个例子。看起来你需要它。
https://stackoverflow.com/questions/3757696
复制相似问题