Как указать различные макеты для портретной и альбомной ориентации?

Я видел ссылки на возможность указать два отдельных XML файла макета для активности, один для Portrait и один для Landscape. Я не должен был найти какую-либо информацию о том, как это сделать. Как я могу указать для каждого вида деятельности, какой xml файл представляет собой портретный макет и который является ландшафтным макетом?

Можно ли также указать разные макеты для разных размеров экрана? Если да, то как это делается?

Ответ 1

Создайте каталог layout-land и поместите ландшафтную версию XML файла вашего макета в этот каталог.

Ответ 2

Вам просто нужно поместить его в отдельные папки с разными именами в зависимости от ориентации и разрешения, устройство автоматически выберет правильный для своих настроек экрана

Подробнее здесь:

http://developer.android.com/guide/practices/screens_support.html

в разделе "Сортировщики каталога ресурсов для размера и плотности экрана"

Ответ 3

Для любителей мыши! Я говорю правой кнопкой мыши на папке ресурсов и Add new resource file, и из доступных квалификаторов выберите orientation:

enter image description here


Но все же вы можете сделать это вручную, скажем, добавив подпапку "layout-land" в

"Your-Project-Directory\приложение\SRC\главная\Рез"

с тех пор любой файл layout.xml в этой подпапке будет автоматически работать только в ландшафтном режиме.

Используйте "layout-port" для портретного режима.

Ответ 4

Просто напоминание:

Удалите атрибут orientation из android:configChanges для активности в вашем манифесте xml, если вы его определили:

android:configChanges="orientation|screenLayout|screenSize"

Ответ 5

Создайте новый каталог layout-land, затем создайте файл xml с тем же именем в layout-land, как это было в каталоге layout, и выровняйте его содержимое для ландшафтного режима.

Обратите внимание, что идентификатор содержимого в обоих xml одинаковый.

Ответ 6

Или используйте это:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:scrollbars="vertical" 
            android:layout_height="wrap_content" 
            android:layout_width="fill_parent">

  <LinearLayout android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

     <!-- Add your UI elements inside the inner most linear layout -->

  </LinearLayout>
</ScrollView>

Ответ 7

Я думаю, что самый простой способ в последних версиях Android - перейти в режим "Дизайн" XML (а не текста).

Затем из меню выберите опцию - Создать альбомную вариацию. Это создаст пейзаж XML без каких-либо хлопот в течение нескольких секунд. Последняя версия Android Studio позволяет сразу создавать ландшафтный вид.

enter image description here

Я надеюсь, что это работает для вас.

Ответ 8

В последней строке ниже приведен пример применения двух квантификаторов: экран с горизонтальной и наименьшей шириной (600 дп). Обновите 600dp с теми, которые вам нужны.

res/layout/main_activity.xml                # For handsets
res/layout-land/main_activity.xml           # For handsets in landscape
res/layout-sw600dp/main_activity.xml        # For 7" tablets
res/layout-sw600dp-land/main_activity.xml   # For 7" tablets in landscape

Вышесказанное относится и к размерам

res/values/dimens.xml                # For handsets
res/values-land/dimens.xml           # For handsets in landscape
res/values-sw600dp/dimens.xml        # For 7" tablets
res/values-sw600dp-land/dimens.xml   # For 7" tablets in landscape

Полезные метрики устройства: https://material.io/tools/devices/

Ответ 9

  1. Щелкните правой кнопкой мыши по папке res,
  2. Новый → Файл ресурсов Android
  3. в Доступных квалификаторах выберите Ориентация,
  4. добавить в выбранный классификатор
  5. в ориентации экрана выберите Пейзаж
  6. Нажмите ОК

Используя Android Studio 3.4.1, он больше не создает папку layout-land. Это создаст папку и объединит два файла макета.

enter image description here

Ответ 10

Самый быстрый способ для Android Studio 3.xx

1. Перейдите на вкладку "Дизайн" макета упражнения.

2.Вверху вы должны нажать на кнопку ориентации для предварительного просмотра, есть опция для создания макета ландшафта (проверьте изображение), новая папка будет создана как файл макета XML для этой конкретной ориентации.

enter image description here