问题: 我试图在运行中改变我的Android应用程序的外观和感觉。类似的东西,应用程序启动并从服务器获取一组值。这些值是通常在colors.xml内部的元素。我正在寻找的是一种动态更改colors.xml内部元素的方法,并使用从服务器接收的这些新值更新它。我的理解是,通常情况下,这不能直接完成。但有没有人找到解决方法?
如果可能,我想避免的事情: 我想避免在每个活动的onCreate()方法中为该视图中的每个元素设置颜色值。如果可能的话,我想避免这种情况。
有什么想法吗?
答案 0 :(得分:8)
您可以通过新引入firebase远程配置来实现此更改,该远程配置提供远程配置以更改主题颜色或应用程序所需的任何其他值,如促销,更新等
您可以参考此Example
答案 1 :(得分:2)
不幸的是,资源目录中的所有颜色值(和其他资源)都被硬编码为静态最终整数。这意味着无法在运行时更改值。但是,您可以使用之前建议的解决方案之一,或者查看这个出色的解释:https://stackoverflow.com/a/33992017/3662251
有一个很好的解决方法,它会覆盖活动的getResources
方法并实现自定义Resources
类,在我看来这是最无缝的解决方案:https://stackoverflow.com/a/34178187/3662251
答案 2 :(得分:0)
我已经在我的应用程序中从我的服务器获取了像#06FF67这样的Hex颜色代码并存储在共享偏好中 - https://stackoverflow.com/a/23024962/4741746
当需要设置来自服务器的新值时,只需使用新数据覆盖相同的共享首选项值并设置为app
或者你也可以使用Random Color genrater - https://stackoverflow.com/a/5280929/4741746