根据主题设置颜色

16

我在我的布局中使用一个强调颜色,将其定义为应用于TextView的样式。

我的应用程序允许用户选择深色主题和浅色主题。我想根据所选的主题微调强调颜色。

  • 您不能在主题中定义颜色
  • 您无法基于主题定义状态列表颜色
  • 您无法根据主题分离资源(如版本或屏幕大小)
  • 您不能从代码更新资源颜色(???不确定???)

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

开发指南给出了使用自定义颜色的主题示例,这与我的要求接近。我需要能够在运行时更改颜色。 我知道可以进入我的代码并获取此样式正在使用的X个位置,然后找出组件并以此方式设置颜色。 但是我认为我可以通过样式/主题的某种组合来实现这一点。

谢谢

1个回答

0
我解决这个问题的方法是创建android.widget.TextView的子类。我创建了一个TextViewAccented和一个TextViewWarning。在我想要强调或警告颜色的XML中使用这些TextViews。我从XML中删除任何颜色引用。
子类包含三个默认构造函数。所有三个构造函数都调用一个名为setColor()的私有方法。setColor()然后检查所选主题,并根据当前选择的主题使用所需的阴影。
这是一个相当干净的机制,但很难相信我不能在主题中编写此代码。这似乎正是主题应该做的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接