【问题标题】:Setting a color based on theme [duplicate]根据主题设置颜色[重复]
【发布时间】:2012-02-02 18:15:04
【问题描述】:

我在整个布局中都使用了强调色。我将其定义为应用于 TextView 的样式。

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

  • 您不能在主题中定义颜色
  • 您不能根据主题定义状态列表颜色
  • 您不能根据主题来分隔资源(正如您可以根据版本或屏幕大小来分隔)
  • 您无法通过代码更新资源颜色(??? 不是 100% ???)

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

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

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2014-06-12
      • 2017-08-12
      • 2012-08-03
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多