można kontrolować kierunek układu bezpośrednio przez layoutDirection.W tym kodzie możemy wykryć, czy naturalny kierunek jest RTL i odwrócić kierunek, oczywiście można zastosować swoją własną logikę do cofania:
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;
}
Albo poprzez XML w przypadku, gdy chcesz zastąpić naturalny kierunek stale:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layoutDirection="ltr"
>
...
</LinearLayout>
Wykrywanie RTL jest pobierana z tym pytanie: Identifyng RTL language in Android
@mtmmurdock jest to dobre rozwiązanie, działa dynamicznie. ale zna poglądy r tego samego typu, wtedy moje rozwiązanie jest lepsze. w każdym razie +1 za to. :) –
Jedna drobna korekta, zmieniłem "<=" w drugiej pętli for na "> =". Działało idealnie! Dzięki. – ZeroEric
dobry połów. naprawiony. – mtmurdock