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

StackOverflow https://stackoverflow.com/questions/2124046

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

В разделе «Квалификаторы каталога ресурсов для размера и плотности экрана»

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

enter image description here


Но все же вы можете сделать это вручную, добавив подразделение «макета» в

"Your-Project-Directory app src main res"

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

Используйте «Mayout-Port» для портретного режима.

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

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

android:configChanges="orientation|screenLayout|screenSize"

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

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

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

<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>

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

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

enter image description here

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

Последняя строка ниже - пример для применения двух квантификаторов: пейзаж и самая маленькая ширина(600DP) экран. Обновите 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/

  1. Щелкните правой кнопкой мыши папку,
  2. Новый -> файл ресурса Android
  3. В доступных квалификаторах выберите ориентацию,
  4. Добавьте к выбранному квалификатору
  5. В ориентации на экране выберите ландшафт
  6. Нажмите ОК

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

enter image description here

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

1. Пройдите вкладку проектирования макета деятельности

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

enter image description here

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top