动态更改colors.xml的值以更改android应用程序的外观

动态更改colors.xml的值以更改android应用程序的外观,android,android-layout,Android,Android Layout,问题: 我正在尝试改变我的Android应用程序的外观和感觉。例如,应用程序启动并从服务器获取一组值。这些值是通常位于colors.xml中的元素。我要寻找的是一种动态更改colors.xml中的元素并使用从服务器接收到的这些新值进行更新的方法。我的理解是,通常情况下,这不能直接完成。但是有人找到解决办法了吗 如果可能,我希望避免的内容: 我希望避免在每个活动的onCreate()方法中为该视图中的每个元素设置颜色值。如果可能的话,我想避免这种情况 有什么想法吗?你可以通过新推出的firebas

问题: 我正在尝试改变我的Android应用程序的外观和感觉。例如,应用程序启动并从服务器获取一组值。这些值是通常位于colors.xml中的元素。我要寻找的是一种动态更改colors.xml中的元素并使用从服务器接收到的这些新值进行更新的方法。我的理解是,通常情况下,这不能直接完成。但是有人找到解决办法了吗

如果可能,我希望避免的内容: 我希望避免在每个活动的onCreate()方法中为该视图中的每个元素设置颜色值。如果可能的话,我想避免这种情况


有什么想法吗?

你可以通过新推出的firebase远程配置来实现这一改变。firebase远程配置提供远程配置来更改主题颜色或应用程序(如促销、更新等)所需的任何其他值


你可以参考这个

我已经在我的应用程序中这样做了,从我的服务器获取了十六进制颜色代码,如#06FF67,并存储在SharedReferences中-

当需要设置来自服务器的新值时,只需使用新数据覆盖相同的共享首选项值并设置为app


或者您也可以使用随机颜色生成器-

不幸的是,资源目录中的所有颜色值(和其他资源)都硬编码为静态最终整数。这意味着无法在运行时更改值。但是,您可以使用之前建议的解决方案之一,或者查看以下出色的解释:


对于覆盖活动的
getResources
方法并实现自定义
Resources
类的良好解决方案,我认为这是最无缝的解决方案:

但这将更改我应用程序的所有实例。我想要的是,根据一些特定条件更改我的应用程序的某些实例的外观。你也可以在Firebase remote config中应用条件…但是如果你的条件是自定义的,那么你必须在appGreat idea中根据自己的逻辑构建!!但当用户在小应用程序中不使用fire base时,意味着没有得到您的支持@Susantgosavi在此之前您是否使用了SharedReferences?如果否,请阅读:如果是,请从您的服务器获取颜色并保存在SharedReferences中,当您想要更改颜色时,请从SharedReferences获取颜色并将其设置到您的应用程序中谢谢Sushant。这就是我想到的解决办法。但问题是(也是我不太热衷于使用它的原因),它要求我在每个活动中,为每个视觉元素(按钮、文本框等)编程设置颜色,而不是动态创建每个小部件,如edittext、textview、TableLayout等,然后设置为活动视图,我建议你去Burhanuddin Rashid Wayes。这就是我目前正在做的(覆盖getResources()。到目前为止,这似乎是最好的前进之路。但我并不热衷于以编程方式对每个活动中的每个元素(如TextView、EditText、Layout)进行更改。希望有一个更简单的方法。小部件通常使用活动主题上下文进行样式设置。因此,TextView的getResources方法实际上将从活动中获取资源。这对于在整个应用程序中调用
getResources().getColor()
非常有用,但是有没有办法从布局资源中直接引用颜色?