Является ли ошибка Android в макете «layout-ldltr» в отношении «layout-ldrtl» после изменения ориентации?

Сала.

В моем проекте мне нужно создать layout-ldltr и layout-ldrtl для layout-ldrtl Right-To-Left и Left-To-Right .

Я запускаю приложение для языка Right-to-Left, и все хорошо. Но когда ориентация изменилась, layout-ldltr загрузки android layout-ldltr макета против layout-ldrtl , хотя в текущем Locale установлен язык RTL !!!

Как решить эту проблему?

В AndroidManifest.xml

 <application android:name=".QuranApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> 

В layout-ldrtl\activity_main.xml :

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layoutDirection="rtl"> <include layout="@layout/toolbar" /> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:layoutDirection="rtl"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:layoutDirection="rtl"/> <include layout="@layout/list_view" android:layout_width="@dimen/drawer_width" android:layout_height="match_parent" android:layout_gravity="start" /> </android.support.v4.widget.DrawerLayout> 

ОБНОВИТЬ

После комментария @JohanShogun я меняю android:layoutDirection="rtl" на android:layoutDirection="locale" и проблема решена для большинства элементов.

На первой фотографии все элементы показаны очень хорошо:

Портретная ориентация

В ландшафтном режиме, в списке списка StickyListHeader в элементе заголовка, который торчит в верхней части экрана, андроид, используемый из макета ltr !!! :

Ориентация Lanscape

Solutions Collecting From Web of "Является ли ошибка Android в макете «layout-ldltr» в отношении «layout-ldrtl» после изменения ориентации?"

Если у вас есть папка с макетами, она возьмет президента над layout-ldrtl и т. Д., Вам может понадобиться создать папки для layout-land-ldrtl и так далее.

Другой способ, с помощью которого вы можете обрабатывать макеты справа налево и слева направо, – это сохранить один файл макета, который написан для работы с обеими версиями.

В LinearLayout и т. Д. Есть атрибут:

 android:layoutDirection 

Вы можете установить это значение «Locale», и ваши горизонтальные макеты перевернут порядок.

Вместо использования align_left/align_right и gravity_left/gravity_right используйте вместо align_start/align_end и gravity_start/gravity_end (для всех атрибутов left/right ). Начальный и конечный теги зависят от направления макета. Если у пользователя есть локаль с запуском ltr левая и конечная правильная , если пользователь имеет локаль с запуском rtl это право и конец остается .

Я лично предпочитаю использовать файлы макетов, которые написаны для работы как с rtl и с ltr сравнению с отдельными, легко пропустить обновление в одной версии, если вы держите разные файлы, что приводит к плохому пользователю.

Также переместите макет в папку макета (удалите "-ldrtl" ), затем измените все android:layoutDirection="rtl" на android:layoutDirection="locale" .