首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >选择器资源可以使用样式中定义的颜色吗?

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

Stack Overflow用户
提问于 2010-09-21 14:03:35
回答 3查看 5K关注 0票数 16

我试图在选择器中使用在stlyle中定义的颜色,但它导致了资源$NotFoundException。

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

代码语言:javascript
复制
<resources>
    <attr name="unread_background" format="color" />
</resources>

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

代码语言:javascript
复制
<style name="ThemeNoTitleBar" parent="android:Theme.NoTitleBar">
    <item name="unread_background">#000000</item>
</style>

然后,我尝试在选择器定义中使用该attr:

代码语言:javascript
复制
<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,但同样失败了。

我显然遗漏了一些东西,但不确定该怎么做才能修复它。我的意图是创建多个主题,并让选择器使用当前所选主题中的颜色。

EN

回答 3

Stack Overflow用户

发布于 2012-01-27 04:17:48

代码语言:javascript
复制
<item android:state_selected="false"
    android:drawable="?unread_background" />

上面这一节是错误的。

drawable仅引用可绘制的资源。请参阅此链接。http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

票数 1
EN

Stack Overflow用户

发布于 2017-04-18 22:03:23

这里有一些东西,对我是有效的。

attrs.xml:

代码语言:javascript
复制
<attr name="color_selection" format="reference"/>

styles.xml,作为主题子主题:

代码语言:javascript
复制
<item name="color_selection">@color/selection_background_inverse</item>

可绘制文件夹中的shape_background_selected.xml:

代码语言:javascript
复制
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="?attr/color_selection"/>
</shape>

您的选择器文件,在我的例子中是: selector_background_recyclerview:

代码语言:javascript
复制
<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中:

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@drawable/selector_recyclerview_item_background"../>
票数 1
EN

Stack Overflow用户

发布于 2010-09-21 14:10:59

Android button with different background colors看一下这个例子。看起来你需要它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3757696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档