Android 基于主题设置颜色

Android 基于主题设置颜色,android,Android,我有一个口音的颜色,我用我的布局。我将其定义为应用于文本视图的样式 我的应用程序允许用户在深色主题和浅色主题之间进行选择。我想根据选定的主题调整重音颜色 不能在主题中定义颜色 不能基于主题定义状态列表颜色 您不能基于主题分离资源(正如您可以根据版本或屏幕大小分离资源一样) 您无法从代码中更新资源颜色(?此代码不是100%?) 我应该如何根据所选主题控制重音颜色 《开发指南》给出了一个使用自定义颜色的主题示例,该颜色与我想要的颜色非常接近。我需要能够在运行时更改颜色。我知道我可以进入我的代码和

我有一个口音的颜色,我用我的布局。我将其定义为应用于文本视图的样式

我的应用程序允许用户在深色主题和浅色主题之间进行选择。我想根据选定的主题调整重音颜色

  • 不能在主题中定义颜色
  • 不能基于主题定义状态列表颜色
  • 您不能基于主题分离资源(正如您可以根据版本或屏幕大小分离资源一样)
  • 您无法从代码中更新资源颜色(?此代码不是100%?)
我应该如何根据所选主题控制重音颜色

《开发指南》给出了一个使用自定义颜色的主题示例,该颜色与我想要的颜色非常接近。我需要能够在运行时更改颜色。我知道我可以进入我的代码和X的地方,在那里使用这种风格,我可以磨出组件,并设置颜色的方式。但我认为我可以通过某种风格/主题的结合来实现这一点


感谢我通过创建android.widget.TextView的子类来解决这个问题。我创建了一个TextViewAccent和一个TextViewWarning。我在XML中使用这些文本视图来显示重音或警告颜色。我从XML中删除任何颜色引用

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

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