Error de diseño RTL en Android Oreo
Desde que actualicé a Android Oreo en dispositivos móviles, mi soporte RTL para la aplicación no funciona. está cambiando las cadenas a árabe pero no cambia la dirección del diseño. pero si ejecuto el mismo cambio RTL a cualquiera de los dispositivos inferiores a oreo, todo funciona bien. Alguien más experimentó este problema? ¿Hay alguna declaración oficial sobre este error y solución?
A continuación se muestra mi método para cambiar la configuración regional
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;
}