当用户更改应用的语言时,它不会更改文本,它会更改布局方向

时间:2018-07-01 12:14:27

标签: android local

这是我第一次这样做。我想在我的应用中选择包含ArabicEnglish的语言。我有一个问题,当用户更改应用程序的语言时,它不会更改文本,只会更改布局方向。我有2个String文件。我搜索了English的原始文档,而搜索string-ar的其他Arabic并尝试了许多解决方案。 其中之一位于this article

这是我的代码。

 public void setLocaleAr (){
    Locale locale = new Locale("ar");
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    Resources resources = getResources();
    resources.updateConfiguration(config, resources.getDisplayMetrics()); //deprecated
}

编辑:,当我使用自己的代码时。我的Spinner中的文本已更改。但是xml文件中的文本没有更改。

2 个答案:

答案 0 :(得分:0)

我在许多项目中使用了本文的示例,并且效果很好。

如文章中所述,您需要一个一个地更新文本或任何其他与语言相关的资源。或者,您可以调用activity.recreate()重新启动当前加载的活动。然后,该活动将使用正确的语言环境重新加载资源。但是,如果选择此选项,则用户会注意到这种影响,因为它将关闭应用程序,并且在很短的时间内出现黑屏,然后同时重新创建活动。

答案 1 :(得分:0)

创建活动时,将语言和其他配置应用于该活动。因此,如果要应用更改,则需要通过recreate()方法重新创建活动。