我有一个使用2种语言的英语和阿拉伯语应用程序,尽管应用程序语言为“ ar”,并且布局值res始终从默认的strings.xml中读取字符串,但我的values-ar中却具有strings.xml。 此外,布局文件始终沿ltr方向。
当我在layout-ar中创建一个布局res时,所创建的布局读取ar字符串并可以作为RTL方向正常工作。
这是我更改语言的方式
Locale locale = new Locale("ar");
DisplayMetrics dm = getApplication().getResources().getDisplayMetrics();
Configuration conf = getApplication().getResources().getConfiguration();
conf.setLocale(locale);
getApplication().getResources().updateConfiguration(conf, dm);
//reload the activity
但是由于APK的大小,我不需要为每个屏幕创建两个(en,ar)XML文件,而且我也不需要更改设计,只需要根据应用程序语言读取字符串和处理方向即可。
[编辑] 当我将电话配置更改为阿拉伯语时,尽管我将语言环境设置为en,但它仅从ar资源中读取。 我发现,layout.xml文件中的问题始终像设备语言一样,而不是应用程序语言,但我不知道为什么?