Bạn có thể điều khiển theo hướng bố trí trực tiếp thông qua các layoutDirection.Trong mã này, chúng tôi phát hiện xem hướng tự nhiên là RTL, và đảo ngược hướng, rõ ràng là người ta có thể áp dụng logic của riêng bạn để đảo ngược:
LinearLayout buttonsContainer = (LinearLayout) findViewById(R.id.buttonsContainer);
buttonsContainer.setLayoutDirection(isRTL() ? LinearLayout.LAYOUT_DIRECTION_LTR :
LinearLayout.LAYOUT_DIRECTION_RTL)
public static boolean isRTL() {
return isRTL(Locale.getDefault());
}
public static boolean isRTL(Locale locale) {
final int directionality = Character.getDirectionality(locale.getDisplayName().charAt(0));
return directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT ||
directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC;
}
Hoặc qua XML trong trường hợp bạn muốn ghi đè lên theo hướng tự nhiên liên tục:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layoutDirection="ltr"
>
...
</LinearLayout>
Phát hiện RTL được lấy từ câu hỏi này: Identifyng RTL language in Android
Nguồn
2016-10-17 07:06:06
@mtmmurdock đây là một giải pháp tốt mặc dù, nó hoạt động tự động. nhưng anh ấy biết quan điểm r cùng loại thì giải pháp của tôi tốt hơn. anyway +1 cho điều này. :) –
Một sửa đổi nhỏ, tôi đã thay đổi "<=" trong vòng thứ hai cho vòng lặp thành "> =". Nó hoạt động hoàn hảo! Cảm ơn. – ZeroEric
bắt tốt. đã sửa. – mtmurdock