根据主题设置颜色

时间:2012-02-02 18:15:05

标签: android

我有一种强调色,我在整个布局中使用它。我把它定义为我应用于TextView的样式。

我的应用程序允许用户在黑暗主题和浅色主题之间进行选择。我想根据所选主题调整强调色。

  • 您无法在主题中定义颜色
  • 您无法根据主题
  • 定义状态列表颜色
  • 您无法根据主题(您可以为版本或屏幕尺寸)分隔资源
  • 您无法从代码更新资源颜色(???这不是100%)

我应该如何根据所选主题控制我的强调色?

开发指南提供了一个使用自定义颜色的主题示例,它接近我想要的。我需要能够在运行时更改颜色。我知道我可以进入我的代码和X使用这种风格的地方我可以把组件磨掉并按照这种方式设置颜色。但我认为我可以通过风格/主题的某种组合来实现这一点。

谢谢

1 个答案:

答案 0 :(得分:0)

我解决这个问题的方法是创建android.widget.TextView的子类。我创建了一个TextViewAccented和一个TextViewWarning。我在我的XML中使用这些TextViews,我想要重音或警告颜色。我从XML中删除任何颜色引用。

子类包含三个默认构造函数。所有三个构造函数都调用一个名为setColor()的私有方法。然后,setColor()检查所选主题,并根据当前选定的主题使用所需的阴影。

这是一个相当干净的机制,但很难相信我无法在主题中对此进行编码。这似乎正是一个主题应该是什么。