Как сделать один макет для альбомной ориентации, а другой - для портретной? Я хочу использовать дополнительную ширину и сохранить вертикальное пространство, когда пользователь поворачивает телефон вбок.
Как сделать один макет для альбомной ориентации, а другой - для портретной? Я хочу использовать дополнительную ширину и сохранить вертикальное пространство, когда пользователь поворачивает телефон вбок.
Ответы:
По умолчанию макеты /res/layout
применяются как в портретной, так и в альбомной ориентации.
Если у вас, например,
/res/layout/main.xml
вы можете добавить новую папку /res/layout-land
, скопировать main.xml
в нее и внести необходимые изменения.
См. Также http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts и http://www.devx.com/wireless/Article/40792/1954 для получения дополнительных сведений.
portrait
В текущей версии Android Studio (v1.0.2) вы можете просто добавить альбомный макет, нажав кнопку в визуальном редакторе, показанном на скриншоте ниже. Выберите «Создать вариант ландшафта».
layout-land
папку. Есть идеи, как оттуда вызвать макет? Не могу использовать R.layout.layout_name
. Я пытаюсь настроить свои собственные макеты вручную при изменении конфигурации, спасибо.
Макеты в / res / layout применяются как к книжной, так и к альбомной ориентации, если вы не укажете иное. Предположим, у нас есть /res/layout/home.xml для нашей домашней страницы, и мы хотим, чтобы она выглядела по-разному в двух типах макета.
Самый быстрый способ для Android Studio 3.xx и Android Studio 4.xx
1.Перейдите на вкладку дизайна макета занятия.
2. Вверху вы должны нажать на кнопку ориентации для предварительного просмотра , есть возможность создать альбомный макет (проверьте изображение), новая папка будет создана как ваш файл макета xml для этой конкретной ориентации.
Вы можете сгруппировать свой конкретный макет в правильной структуре папок следующим образом.
Макет-земля-target_version
т.е.
layout-land-19 // мишень KitKat
аналогично вы можете создавать свои макеты.
Надеюсь, что это поможет вам
-19
суффикса? Это хоть как-то полезно?
Я постараюсь объяснить это в ближайшее время.
Во-первых, вы можете заметить, что теперь вы должны использовать ConstraintLayout по запросу Google (см. Библиотеку androix).
В вашем проекте студии Android вы можете предоставить макеты для конкретного экрана, создав дополнительные каталоги res / layout /. По одному для каждой конфигурации экрана, требующей разного макета.
Это означает, что вы должны использовать квалификатор каталога в обоих случаях:
В итоге вот пример:
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
Вы также можете использовать квалификатор с файлами ресурсов, используя sizes.xml.
res/values/dimens.xml # For handsets
res/values-land/dimens.xml # For handsets in landscape
res/values-sw600dp/dimens.xml # For 7” tablets
RES / значения / dimens.xml
<resources>
<dimen name="grid_view_item_height">70dp</dimen>
</resources>
RES / значения-земля / dimens.xml
<resources>
<dimen name="grid_view_item_height">150dp</dimen>
</resources>
your_item_grid_or_list_layout.xml
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="@dimen/grid_view_item_height"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/border"
android:src="@drawable/ic_menu_slideshow">
</androidx.constraintlayout.widget.ConstraintLayout>
Источник: https://developer.android.com/training/multiscreen/screensizes