我正在一个应用程序中处理不同的主题。例如,我有一个登录屏幕,对于所有主题,我想设置不同的背景和文本颜色。
我从color.xml获取颜色。所以我可以用相同的键和所有主题的不同颜色代码定义背景和文本颜色。
*Theme 1
*Theme 2
*Theme 3
只有1个带有
的color.xml文件 <color name="background">#000000</color>
<color name="textcolor">#FFFFFF</color>
现在我想为所有主题使用不同的颜色代码。怎么可能这样......
任何想法???
答案 0 :(得分: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>
值得一提的是,每个主题都可以放在单独的文件中。因此,每个主题可以有不同的颜色。现在基本上,您可以在每个主题中定义颜色了