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

在Android应用程序中使用自定义区域设置

凌博实
2023-03-14

编辑:

我的理解可能是错误的,但这是一个不同于以编程方式设置语言环境的问题,因为我已经实现了那里建议的答案,我仍然有一些问题。

在这个问题中,我请求帮助解决这些问题(在设置的语言环境中没有参考的问题)。

原始帖子

我试图在我的应用程序中实现自定义语言环境,并遇到几个问题。

在调用setContentView之前,我在所有活动中使用以下代码:

Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = new Locale(newLocale);;
res.updateConfiguration(conf, dm);

编辑:

我还测试了它与:

Resources res = getBaseContext().getResources();

我添加到Android中的所有活动anifest.xml以下属性:

android:configChanges="locale|orientation"

当用户选择一个新的语言环境时,我也会运行上面的代码来更新配置。

我遇到的问题是:

  1. 更改区域设置后,当前活动中仅更新的文本使用新区域设置(同样,当我在上一个活动中按“上一步”时,仅刷新的文本使用新区域设置(如果启动新活动,它将按预期使用新区域设置)

对于第一个问题,我通过仅在应用程序启动时应用更改来解决它,当用户更新区域设置时,我会显示一条消息,请求用户重新启动应用程序,以使更改生效。我更喜欢在不重新启动应用程序的情况下进行更改,但不知道如何使其正常工作。

如果在自定义语言环境中使用SimpleDataFormat,第二个问题可以解决,但是如果可能的话,我更喜欢使用DateUtils。

对于最后两个问题,我找不到任何克服它的方法。

感谢您的帮助。

共有1个答案

耿和韵
2023-03-14

你没有看到这些变化的原因是Android并不是为这个用例而创建的。地区设置预计将通过系统设置进行更改,而不是基于每个应用。通过配置设置区域设置只会更改此活动的区域设置,而不会为应用程序全局设置。如果你想在全球范围内进行,你需要自己存储当前区域设置,并在应用程序中每个活动的onResume中手动设置。

我不确定是否有任何方法可以让内置实用程序尊重更改后的区域设置,因为它们可能正在查看系统区域设置。您可能需要从AOSP中获取小部件,复制代码,并修改它以查看您的区域设置变量,而不是使用内置版本。

工作量很大。我不知道你的应用程序在做什么,但我会重新考虑是否真的需要这个功能。

 类似资料:
  • 在Java中,定义了与人们想要如何看待事物相关的事物(比如货币格式、月份名称以及一周开始的时间)。 解析月份名称时(使用)会变得很棘手。 如果使用或Sep的缩写形式是九月。 如果使用Sep在Java11中也有缩写形式。。。但是,当您尝试Java 17时,它有(因为Unicode CLDR端的更改,我问这是否正确)。 结果是,我的测试在尝试使用Java 17构建时开始失败。 我当前代码使用而不是

  • 问题是,就应用程序生命周期处理和易于使用而言,这种体系结构是否可以被认为是安全的? Update:每次创建新的活动并希望获得数据时,它可以获得ApplicationContext的BehaviorSubject,然后订阅它,Subject将发出最后发出的值;我为什么要这样做?例如。假设你有新闻项目,你获取了新闻提要,你想启动后台任务来获取新闻项目的全部内容,在这种情况下,我可以在你滚动新闻列表时开

  • 是否可以在Android应用程序中设置自定义字体? 我尝试了这里发布的内容,但我不知道我的扩展应用程序类在哪里。。。 有什么帮助吗? 编辑: 我尝试了以下方法: 添加一个资产文件夹并将字体插入其中,如下所示: > 从我的调用这个新类。 我选择了我的风格并添加了它。 MyApp。java: AndroidManifest。xml: 样式。xml: 但我的字体还是不是长宁。。。有什么想法吗? 然后调用

  • 我正在用cakephp开发一个用户库,用于我的应用程序中的翻译操作。我想创造。po文件在Lib目录中,这就是为什么我在Lib目录中创建Locale文件夹,并在相应的语言目录中创建po文件。但问题是CakePHP在默认情况下是在其默认区域设置位置搜索po文件的。现在我的语言环境目录在Lib文件夹中。 我怎么能让cakephp搜索po文件在我自己的区域设置目录这是在Lib文件夹? 这是我的翻译课程代码

  • 所以我现在正在做一个需要数字拾取器的应用程序。我已经创建了数字拾取器使用一个按钮textview+按钮布局。t选择器可以正常工作,但当您删除数字并尝试按下任何按钮时,此时应用程序会崩溃。