在运行时将整个应用程序切换到备用“styles.xml”文件?

时间:2010-07-22 12:18:46

标签: android

我的应用有一个styles.xml文件,其中定义了各种视觉常量。

我希望我的用户能够将整个应用切换到另一个视觉主题。我想提供一个替代styles2.xml文件并在运行时切换(通过设置)。

这可能,怎么样?我怀疑样式名称在生成的R类中的外观并不是好兆头。

如果不可能,那么我的下一个最佳选择是什么?

3 个答案:

答案 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