根据具有不同状态

时间:2015-06-16 13:50:26

标签: android android-layout

我尝试根据我的主题更改颜色。我的TextView正在使用具有不同状态的颜色选择器来启用和禁用,我想在此选择器中使用基于主题的颜色。

我已遵循此解决方案:android themes - defining colours in custom themes

在我的视图中用作android:textColor的选择器如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:color="#ffffff" />
    <item android:state_enabled="false" android:color="?attr/ThemeTest"/>
</selector>

ThemeTest是我的自定义属性,在我的主题中分配了颜色。如果我使用这个选择器作为我的textColor,颜色实际上不是我选择的颜色,而只是一个简单的简单RED!但是,如果我在我的视图中直接使用自定义attribut

android:textColor="?ThemeTest"

然后它有效,但我显然希望根据我的观点状态的变化做到这一点......

有人了解这种行为并知道如何解决这个问题吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

  

仅在最新版本的Android中支持在颜色选择器XML文件中使用主题属性。要克服此限制,您需要为每个主题创建一个颜色选择器文件,并用纯色填充它们。然后根据主题创建一个指向正确颜色选择器的主题属性。

来源:https://plus.google.com/102404231349657584821/posts/XEeehfwanGy

编辑:测试,它完美无瑕!