Ist der Android-Fehler im Layout "layout-ldltr" gegen "layout-ldrtl" geladen, nachdem sich die Ausrichtung geändert hat?

8

Salam.

In meinem Projekt muss ich sowohl layout-ldltr als auch layout-ldrtl Layouts für Right-To-Left und Left-To-Right languages ​​erstellen.

Ich starte eine Anwendung für die Sprache von rechts nach links, und alles ist gut. Aber wenn sich die Ausrichtung geändert hat, lädt android layout-ldltr layout gegen layout-ldrtl , obwohl der aktuelle Locale auf RTL-Sprache gesetzt ist !!!

Wie kann dieses Problem behoben werden?!

In AndroidManifest.xml

%Vor%

In layout-ldrtl\activity_main.xml :

%Vor%

AKTUALISIEREN

Nach dem Kommentar von @JohanShogun ändere ich android:layoutDirection="rtl" in android:layoutDirection="locale" und das Problem wurde für die meisten Elemente gelöst.

Im ersten Foto sind alle Elemente sehr gut dargestellt:

Im Querformat, in der StickyListHeader-Listenansicht im Kopfzeilenelement, das oben auf dem Bildschirm angezeigt wird, wird Android von ltr verwendet Layout !!! :

    
Sayed Abolfazl Fatemi 11.07.2015, 13:29
quelle

1 Antwort

6

Wenn Sie einen Ordner mit Layout-Land haben, wird es Präsident über Layout-ldrtl usw. nehmen, müssen Sie möglicherweise Ordner für Layout-Land-ldrtl usw. erstellen.

Eine andere Möglichkeit, mit der Sie Ihre Layouts von rechts nach links und von links nach rechts bearbeiten können, besteht darin, eine Layoutdatei beizubehalten, die für beide Versionen geschrieben wurde.

Auf einem LinearLayout usw. gibt es ein Attribut:

%Vor%

Sie können dies auf den Wert von "Locale" einstellen, und Ihre horizontalen Layouts werden umgedreht.

Anstatt align_left/align_right und gravity_left/gravity_right zu verwenden, verwenden Sie stattdessen align_start/align_end und gravity_start/gravity_end (gilt für alle left/right Attribute). Die Start- und End-Tags hängen von der Layout-Richtung ab. Wenn der Benutzer eine Ländereinstellung mit ltr hat, ist Start und Ende ist rechts , wenn der Benutzer eine Ländereinstellung mit% co_de hat% Start ist richtig und Ende ist links .

Ich persönlich bevorzuge die Verwendung von Layout-Dateien, die mit rtl und rtl arbeiten und keine separaten haben. Es ist leicht, ein Update in einer Version zu verpassen, wenn Sie verschiedene Dateien behalten, was zu einer schlechten Benutzererfahrung führt.

Verschiebe auch dein Layout in den Layout-Ordner (entferne ltr ) und ändere dann alle "-ldrtl" in android:layoutDirection="rtl" .

    
JohanShogun 26.07.2015, 09:02
quelle