我有使用主要语言英语和次要语言阿拉伯语的多语言应用程序。
如文档中所述,
我已经添加android:supportsRtl="true"了清单。
我已将所有xml属性分别与left和right属性分别更改为start和end。
我在中添加了阿拉伯语言字符串strings-ar(其他资源也是如此)。
上面的设置可以正常工作。将更Locale改为后ar-AE,阿拉伯文和资源会正确显示在我的活动中。
但是,每次我Activity使用WebView 和和/或导航到时WebViewClient,语言环境,文本和布局方向都会突然恢复为设备默认值。
更多提示:
这仅在具有Android 7.0的Nexus 6P上发生。一切在Android 6.0.1及更低版本上均可正常运行。
仅当我导航到Activity具有WebView和(或)WebViewClient(并且我有多个)的时,才会发生语言环境的突然变化。在任何其他活动上都不会发生。
Android 7.0支持多语言环境,允许用户设置多个默认语言环境。因此,如果我将主要语言环境设置为Locale.UK:
在此处输入图片说明
然后在导航到时WebView,语言环境从更改ar-AE 为en-GB。
Android 7.0 API更改:
如API更改列表中所示,与语言环境有关的新方法已添加到API 24中的以下类:
Locale:
Locale.getDefault(...)
Locale.setDefault(...)
Configuration:
getLocales()
setLocales(...)
但是,我正在使用API 23构建我的应用程序,并且没有使用任何这些新方法。
此外...
Nexus 6P仿真器上也会发生此问题。
要获取默认语言环境,我正在使用Locale.getDefault()。
要设置默认语言环境,我使用以下代码:
public static void setLocale(Locale locale){
Locale.setDefault(locale);
Configuration config = new Configuration();
config.setLocale(locale);
Context context = MyApplication.getInstance();
context.getResources().updateConfiguration(config,
context.getResources().getDisplayMetrics());
}
有人遇到过这个问题吗?原因是什么,我该如何解决?
慕慕森
炎炎设计
相关分类