你能以编程方式在android上的xml资源文件之间切换吗?

时间:2013-09-03 00:03:12

标签: android xml string resources

Android内置了基于用户设备语言(http://developer.android.com/training/basics/supporting-devices/languages.html)在资源之间切换的功能,但是可以手动切换资源吗?

例如,如果我有: yProject /     RES /        值/            strings.xml中        值-ES /            strings.xml中        值-FR /            的strings.xml

我可以根据用户偏好而不是设备语言更改使用哪个字符串文件吗?那么使用法语设备的人可以选择使用英文文本吗?

我知道我可以在代码中使用字符串变量而不是使用xml,但我觉得xml会更整洁。

1 个答案:

答案 0 :(得分:0)

是的,你可以。这是根据用户偏好从项目复制/粘贴到onCreate()

Resources res = getResources();
Configuration conf = res.getConfiguration();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

String def = Locale.getDefault().getDisplayLanguage();
String lang = prefs.getString("LANGUAGE", def);
conf.locale = new Locale(lang);
Log.v("myapp", lang+" = "+conf.locale+" = "+conf.locale.getDisplayName());
res.updateConfiguration(conf, res.getDisplayMetrics());

通过将名为LANGUAGE的用户首选项设置为所需语言的双字母代码,然后重新启动Activity,您可以手动覆盖设置语言。通过删除首选项,您将获得系统默认值。