当前位置: 首页 > 知识库问答 >
问题:

您能在Android上以编程方式切换xml资源文件吗?

焦同
2023-03-14

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

例如,如果我有:yproject/res/values/strings.xml values-es/strings.xml values-fr/strings.xml

我可以根据用户的首选项而不是他们的设备语言更改使用的字符串文件吗?所以使用法语语言设备的人可以选择使用英语文本,如果他们愿意的话?

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

共有1个答案

轩辕煜
2023-03-14

是的,你可以。这是根据用户首选项从项目复制/粘贴到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的用户首选项设置为所需语言的两个字母代码,然后重新启动活动,您可以手动覆盖set the LANGUAGE。通过删除首选项,您将获得系统默认值。

 类似资料:
  • 我在尝试完全以编程方式进行此布局时遇到了问题,每次进程运行结束时都没有成功,应用程序崩溃。 XML im试图以编程方式创建的部分是: 我试图用以下kotlin代码重新创建它: 这就是我在logcat中遇到的错误 我仍在研究它可能是什么,我怀疑它可能是错误的LayoutParams,但如何以编程方式正确设置这些资源还不是很清楚。 提前谢谢。 PD:如果我发现了什么,我会更新。 欢迎任何帮助! 更新1

  • 问题内容: 我在4.4.2上,尝试通过uri删除文件(图像)。这是我的代码: 目前,这些删除功能均未真正删除文件。我的AndroidManifest.xml中也有此代码: 问题答案: 您为什么不使用以下代码对此进行测试: 我认为问题的一部分是您永远不要尝试删除文件,而只是创建一个具有方法调用的变量。 因此,在您的情况下,您可以尝试: 但是我认为这有点过分。 您添加了一条注释,说明您正在使用外部目录

  • 问题内容: 我正在尝试通过按“感觉幸运”按钮切换到第二个视图。当我尝试模拟器并按下它时,它只会显示黑屏。我该如何解决? 问题答案: 您可以通过控制从第一个场景顶部的视图控制器图标拖动到第二个场景来在情节提要中的两个场景之间添加序列: 然后,您可以选择该segue并为其指定一个唯一的情节提要标识符,然后可以使用该标识符执行segue: 或者,您可以执行以下操作: 其中“第二个”是我在Interfac

  • 问题内容: 对此进行一些研究,似乎您无法在iOS 6或7中切换“请勿打扰”模式。想知道您是否可以在iOS 8中进行操作。我在Apple的文档中找不到任何内容 任何帮助都会很棒。谢谢! 问题答案: 此功能将在Apple放置每个应用程序的沙箱外部。应用程序之间的联系和沙箱外部的联系非常受限制。Apple可以让您摆脱的一个示例是打开手电筒,但是像AirPlane模式一样,“请勿打扰”(应该是)受到限制。

  • 问题内容: 我的资源文件中有很多字符串数组,我想根据用户输入以编程方式访问它们。 因此,如果c == 12,则info应该是名称为“ n_12”的字符串数组。有没有办法做到这一点,并且避免对数百种情况进行switch语句? 谢谢 问题答案: 您可以像这样获取资源ID 然后只需使用该ID 在这里看看有关的另一个示例。

  • 问题内容: 如何在不启动GUI的情况下如何编写python脚本来读取Tensorboard日志文件,提取损失和准确性以及其他数字数据? 问题答案: 您可以使用TensorBoard的Python类或脚本来提取数据: 如何从TensorBoard导出数据? 如果您想导出数据以在其他地方可视化(例如iPython Notebook),那也是可能的。您可以直接依赖TensorBoard用来加载数据的基础