自从我在移动设备上升级到Android Oreo之后,我的应用程序的RTL支持就不起作用了。它虽然将字符串更改为阿拉伯语,但未更改布局方向。但是,如果我将相同的RTL转换运行到低于Oreo的任何设备上,一切都正常工作。还有其他人遇到这个问题吗?是否已经发布了关于此错误和解决方法的官方声明?
以下是我更改本地设置的方法。
以下是我更改本地设置的方法。
public static boolean setDefaultLocale(Context context) {
Resources resources = context.getResources();
PreferenceManager preferenceManager = PreferenceManager.getInstance();
String localLanguage = resources.getConfiguration().locale.getLanguage();
boolean isLanguageChanged = !preferenceManager.getCurrentLanguageCode().equalsIgnoreCase(localLanguage);
if (isLanguageChanged) {
Log.d("", preferenceManager.getCurrentLanguageCode());
Locale locale = new Locale(preferenceManager.getCurrentLanguageCode());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
Locale.setDefault(Locale.Category.DISPLAY, locale);
else
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
resources.updateConfiguration(config, resources.getDisplayMetrics());
((Activity) context).recreate();
}
return isLanguageChanged;
}