我有一个多语言应用程序,主要语言是英语,次要语言是阿拉伯语。
如文档中所述,
- 我已
android:supportsRtl="true"在清单中添加。 - 我已将所有带有
left和right属性的 xml 属性分别更改为start和end。 - 我已经添加了阿拉伯语字符串
strings-ar(对于其他资源也是如此)。
上述设置工作正常。更改为Locale后ar-AE,阿拉伯语文本和资源会正确显示在我的活动中。
但是,每次我
Activity使用 aWebView和/或 a导航到 aWebViewClient时,区域设置、文本和布局方向都会突然恢复为设备默认值。
进一步提示:
- 这只发生在装有Android 7.0的 Nexus 6P 上。在 Android 6.0.1 及更低版本上一切正常。
- 仅当我导航到
Activity具有 aWebView和/或 aWebViewClient(并且我有多个)的位置时,才会发生区域设置的突然转变。它不会发生在任何其他活动上。
Android 7.0 支持多语言环境,允许用户设置多个默认语言环境。因此,如果我将主要语言环境设置为Locale.UK:
然后在导航到 时
WebView,区域设置从ar-AE变为en-GB。
Android 7.0 API 更改:
如API 更改列表所示,与语言环境有关的新方法已添加到 API 24 中的以下类中:
Locale:
Configuration:
但是,我正在使用 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()); }
有没有人遇到过这个问题?这是什么原因,我该如何解决?
参考:
2. 多语言支持 - 语言和区域设置。
3. 警惕默认语言环境。




