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

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

Нужно ли мне кодировать два макета для каждого экрана — один для книжной ориентации и один для альбомной? Это было бы такой пустой тратой времени.


person Brad Hein    schedule 29.08.2010    source источник
comment
Если это действительно проблема, вы можете исправить свое приложение, чтобы оно работало только в портретном режиме, хотя это может расстроить владельцев некоторых телефонов, ориентированных на альбомную ориентацию, таких как Droid.   -  person fredley    schedule 30.08.2010


Ответы (2)


да


Согласно Здравствуйте, Android Эда Бернетта < сильный>. . .

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

person DigitalRoss    schedule 29.08.2010

Я думаю, что на данный момент лучший выбор — Constraint Layout. Но в сообществе Android даже для одного производителя есть много устройств и разных размеров экрана. Вы должны опираться на границу экрана, начинать оттуда и разрабатывать свое приложение с этой границы. Также каждый пользователь может выбрать разные размеры для своих дисплеев (dp) и шрифты (sp). Для этих вариантов вы можете использовать разные файлы styles.xml. Подобно тому, как в strings.xml есть разные файлы для разных языков, в styles.xml также есть разные файлы для разных вариантов dp. Также вам нужно обрабатывать этот вид материалов. И сделать все дважды для ландшафтного и портретного режима с разными макетами.

Как видите, работы много. Так что простой дизайн - это самое главное.

person Yavuz Bahçeci    schedule 04.03.2020