Kể từ khi tôi nâng cấp lên android oreo trên thiết bị di động, hỗ trợ RTL cho ứng dụng của tôi không hoạt động. nó thay đổi các chuỗi sang tiếng Ả Rập nhưng không thay đổi hướng bố cục. nhưng nếu tôi chạy cùng một RTL chuyển sang bất kỳ thiết bị nào thấp hơn oreo, mọi thứ đều hoạt động tốt. bất cứ ai khác có kinh nghiệm vấn đề này? có bất kỳ tuyên bố chính thức nào về lỗi này và cách giải quyết khác không?Lỗi bố cục RTL trong android Oreo
Dưới đây là phương pháp của tôi để thay đổi vị trí
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;
}
Bạn có bật RTL trong tệp kê khai không? –
@SamuelRobert: yes android: supportRtl = "true" –
@SamuelRobert: chỉ để làm rõ thực tế, mọi thứ đều hoạt động tốt như mong đợi ngay cả bố cục RTL chuyển đổi dưới oreo nhưng không có trong thiết bị oreo. –