我有一个多语言的应用程序与主要语言英语和第二语言阿拉伯语.
我打电话setLocale()的onCreate()每一个Activity在我的应用程序:
public static void setLocale(Locale locale){
Locale.setDefault(locale);
Context context = MyApplication.getInstance();
final Resources resources = context.getResources();
final Configuration config = resources.getConfiguration();
config.setLocale(locale);
context.getResources().updateConfiguration(config,
resources.getDisplayMetrics());
}
Run Code Online (Sandbox Code Playgroud)
其中locale一个是以下之一:
在调用之前 super.onCreate(savedInstanceState)调用上述方法.
如文档中所述,
android:supportsRtl="true"在清单中添加了.left和right属性start,并end分别.res\values-ar\strings文件夹中,并将可绘制资源放在res\drawable-ar文件夹中(对于其他资源也是如此).以上设置正常.改变后的Locale到ar-AE,阿拉伯文字和资源都正确地显示在我的活动.
但是,对于版本8.0及更高版本的所有Android设备,资源和布局方向都存在问题.
在版本低于8.0的设备上,RTL屏幕正确如下所示:
在所有8.0+的设备上,同样的屏幕看起来像这样:
这是错的.
事实证明,方向和资源都显示不正确.
这里有两个问题:
Locale在应用配置中似乎没有更新正确的内容. …