【问题标题】:Is it possible to have different color.xml for different theme?是否可以为不同的主题使用不同的 color.xml?
【发布时间】:2014-06-03 19:52:00
【问题描述】:

我正在一个应用程序中处理不同的主题。例如,我有一个登录屏幕,对于所有主题,我想设置不同的背景和文本颜色。

我正在从 color.xml 中获取颜色。所以我可能应该为所有主题使用相同的键和不同的颜色代码定义背景和文本颜色。

*Theme 1
*Theme 2
*Theme 3

只有 1 个 color.xml 文件带有

 <color name="background">#000000</color>
 <color name="textcolor">#FFFFFF</color>

现在我想为所有主题使用不同的颜色代码。这怎么可能..

知道吗???

【问题讨论】:

  • 您需要在运行时更改主题(颜色)吗?
  • 没有。但是您可以使用不同的颜色来创建不同的主题。喜欢:theme1_background、theme2_background、...
  • 是的,有点。但我不想让它成为代码库。我想改变它的风格。我可以像这样定义它:主题 1 使用 color_1.xml,主题 2 使用 color_2.xml 吗??
  • @BobMalooga 我没听懂你..
  • 你不能使用同名文件,颜色也不能使用相同的字符串键

标签: android styles android-theme


【解决方案1】:

这个问题可以通过以下方法解决。 首先创建一个 attrs.xml 文件,在其中定义颜色标识符。 像这样:

<?xml version="1.0" encoding="utf-8"?> <resources> <attr name="myColor" format="color" /> </resources>

然后您创建一个 base_theme.xml 文件,在该文件中您不定义颜色而是定义属性。像那样:

<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">?attr/myColor</item>
</style>

最后,您通过扩展基本主题并定义您的特定颜色来创建每个主题, 像这样:

<style name="Theme1" parent="BaseTheme">
    <item name="myColor">#123456</item>
</style>

值得一提的是,每个主题都可以在单独的文件中。因此,我们可以为每个主题使用不同的颜色。基本上现在你可以在每个主题中定义你的颜色

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2022-01-22
    • 2018-12-08
    • 1970-01-01
    相关资源
    最近更新 更多