È possibile controllare la direzione del layout direttamente attraverso il layoutDirection.In questo codice si rileva se il senso naturale è RTL, e invertire la direzione, ovviamente, si può applicare la propria logica di inversione:
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;
}
O tramite XML nel caso in cui si desidera ignorare la direzione naturale costantemente:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layoutDirection="ltr"
>
...
</LinearLayout>
rilevamento di RTL è preso da questa domanda: Identifyng RTL language in Android
fonte
2016-10-17 07:06:06
@mtmmurdock questa è una buona soluzione, però, funziona in modo dinamico. ma conosce le opinioni dello stesso tipo, quindi la mia soluzione è migliore. comunque +1 per questo. :) –
Una correzione minore, ho cambiato il "<=" nel secondo per il ciclo su "> =". Ha funzionato perfettamente! Grazie. – ZeroEric
buona presa. fisso. – mtmurdock