Odkąd uaktualniłem do Androida oreo na telefonie komórkowym, moja obsługa RTL dla aplikacji nie działa. zmienia łańcuchy na arabski, ale nie zmienia kierunku układu. ale jeśli uruchomię takie samo przesunięcie RTL do dowolnego urządzenia niższego niż oreo, wszystko działa dobrze. ktoś jeszcze doświadczył tego problemu? czy jest jeszcze jakieś oficjalne oświadczenie na temat tego błędu i sposobu jego obejścia?Błąd układu RTL w Androidzie Oreo
Poniżej jest moja metoda, aby zmienić ustawienia regionalne
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;
}
Czy włączono RTL w manifeście? –
@SamuelRobert: yes android: supportsRtl = "true" –
@SamuelRobert: tylko po to, aby wyczyścić fakt, wszystko działa poprawnie zgodnie z oczekiwaniami, nawet układ RTL Przesuwanie poniżej oreo, ale nie w urządzeniach Oreo. –