如何在保留主题中的所有样式的同时以编程方式更改colors.xml?

时间:2016-09-08 11:37:42

标签: android styles themes

在我的应用程序中,我必须更改运行时的所有颜色。该应用程序以灰色开头,然后要求用户选择其性别。当他们选择男性时,应用程序变为蓝色,当他们选择女性时,应用程序变为粉红色。

我定义了一个AppTheme来设置所有小部件的样式,引用res/values/colors.xml中的颜色并使用res/drawable作为背景,后者又引用颜色。一切看起来都很稳固,整齐地捆绑在一起,所以我真的很想重复使用它!

我认为如果我以某种方式取代res/values/colors.xml,那么一切都会变得很好,但我担心这是不可能的,我不知道如何做到这一点。我担心我必须将整个主题复制并粘贴到AppTheme.BlueAppTheme.Pink,但这非常可怕,因为它会逐渐替换为每个{{1} }}

那怎么办呢?必须有一些技巧,我可以单独drawable/*并在它们之间切换......

1 个答案:

答案 0 :(得分:0)

你不能改变colors.xml,你应该做的是创建具有指向颜色的主题属性的主题。因此,在一个主题中,属性primary_dark将指向黑色,而在另一个主题中,它可以指向灰色。然后让你的样式指向主题属性而不是直接指向颜色。这样,您可以在运行时更改主题,然后更改映射到属性/样式的颜色。这是一个关于如何执行此操作的好指南http://www.hidroh.com/2015/02/25/support-multiple-themes-android-app-part-2/

相关问题