根据主题设置颜色

hec*_*vey 16 android

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

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

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

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

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

谢谢

hec*_*vey 0

我解决这个问题的方法是创建 android.widget.TextView 的子类。我创建了一个 TextViewAccented 和一个 TextViewWarning。我在 XML 中使用这些 TextView,其中需要强调色或警告色。我从 XML 中删除了所有颜色引用。

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

这是一个相当干净的机制,但很难相信我不能在主题中编写它。这似乎正是主题应该有的用途。