我的应用有一个styles.xml
文件,其中定义了各种视觉常量。
我希望我的用户能够将整个应用切换到另一个视觉主题。我想提供一个替代styles2.xml
文件并在运行时切换(通过设置)。
这可能,怎么样?我怀疑样式名称在生成的R类中的外观并不是好兆头。
如果不可能,那么我的下一个最佳选择是什么?
答案 0 :(得分:1)
实际上,在阅读了一些文档之后,似乎可以做到这一点。 Look here. 如上所述:
要创建一组样式,请保存XML 文件在res / values /目录下 你的项目。 XML文件的名称 是任意的,但它必须使用.xml 扩展并保存在 res / values / folder。
现在,如果这是合乎逻辑的并且我没有错误地阅读文档,您可以根据需要创建任意数量的样式,使用@style / ...在themes.xml中引用它们(如果要将其应用于整个活动或应用程序)然后,只需调用
setTheme(R.id.yourtheme)
我认为这应该有效。快点去告诉我们?
答案 1 :(得分:1)
不确定是否有人仍然感兴趣,但我找到了可能的解决方案。有点hackish但得到了理想的结果。 基本上我将我的2个样式文件设置在不同的国家/地区代码目录中:
res/values-mcc199/style.xml
res/values-mcc198/style.xml
然后在我的活动中,我使用以下内容来更改引用的内容:
Configuration config = new Configuration();
config.mcc = 199;
getBaseContext().getResources().updateConfiguration(config,null);
到目前为止,我只进行了一些基本的测试,但似乎有效。显然,如果您已经使用国家/地区代码来决定布局,那么这将会产生干扰。我认为如果手机收到关于国家变化的事件,也可能会出现问题。
答案 2 :(得分:0)
这不是一个确切的答案;在我的博客文章中:
http://blog.blundell-apps.com/switching-android-configurations-using-constants-and-ant/
我在构建时使用Ant切换出一个java类,没有什么可以阻止你切换出一个XML文件,因为它在>>交换机之后编译。要修改教程,您只需要更改模板文件的路径。
还在GitHub上镜像:https://github.com/blundell/BuildChoiceTut