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


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

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

6 124

6 ответов:

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

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

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

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

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

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

enter image description here


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

"Your-Project-Direction\app\src\main\res"

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

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

напоминаем:

удалить orientation С android:configChanges атрибут для действия в манифесте

создать новую папку 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>