2016-01-20 13 views
8

Używam API 17 i szukam sposobu, aby ustawić całą aplikację na rtl zamiast używać <android:layoutDirection="rtl"> w każdym pojedynczym layoucie działania.Jak ustawić kierunek całej aplikacji na RTL?

+0

Możecie spróbować ustawić 'android: supportsRtl = TRUE w AndroidManifest.xml w' ' tagu. – PattaFeuFeu

+4

@ PattaFeuFeu: to by zmieniło tylko kierunek, podczas gdy językiem OS jest rtl. Chcę zmienić kierunek, nawet jeśli system operacyjny jest LTR – mdehghani

Odpowiedz

5

miałem ten sam problem, wszystko co musisz zrobić, to po prostu rozważyć wszystkie używane kontener nadrzędnego (LinearLayout, RelativeLayout, GridView, etc) i ustawić LayoutDirection na RTL można podejść w ten sposób programowo, dzięki klasie ViewCompat, aby uwzględnić api niższe niż 17.

ViewCompat.setLayoutDirection(yourParentContainer,ViewCompat.LAYOUT_DIRECTION_RTL);

pamiętać, że nie ma potrzeby, aby ustawić kierunek dla childviews oddzielnie

+0

thx dużo. myślę, że to wystarczy. – mdehghani

1

Proszę zaznaczyć to wyodrębnić tekst z Android programistów weblog:

Aby wykorzystać układ RTL mirroring, wystarczy wykonać następujące zmian w aplikacji:

1- deklarować w swoim manifeście, że app Twoja aplikacja obsługuje mirroring RTL. W szczególności dodaj android: supportsRtl = "true" do elementu w pliku manifestu.

2- Zmień wszystkie właściwości układu "prawo/lewo" w aplikacji na nowe odpowiedniki "start/koniec" w wersji . Jeśli kierujesz swoją aplikację na system Android 4.2 (wartość targetSetk lub minSdkVersion aplikacji wynosi 17 lub więcej), a następnie powinieneś użyć "start" i "end" zamiast "left" i "right". Dla przykładu , android: paddingLeft powinien stać się androidem: paddingStart.

Jeśli chcesz swoją aplikację do pracy z wersji wcześniejszych niż Android 4.2 (Aplikacja za targetSdkVersion lub minSdkVersion wynosi 16 lub mniej), to należy dodać „start” i koniec”oprócz«w lewo»i„prawo ". Dla przykładu, użyłbyś zarówno android: paddingLeft, jak i android: paddingStart.

pełny tekst można znaleźć tutaj:

http://android-developers.blogspot.ca/2013/03/native-rtl-support-in-android-42.html

Powiązane problemy