Як я можу мати один макет для пейзажу та один для портрета? Я хочу припустити додаткову ширину і зберегти вертикальний простір, коли користувач повертає телефон набік.
Як я можу мати один макет для пейзажу та один для портрета? Я хочу припустити додаткову ширину і зберегти вертикальний простір, коли користувач повертає телефон набік.
Відповіді:
За замовчуванням макети в /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 для цієї конкретної орієнтації
Ви можете згрупувати свій конкретний макет за правильною структурою папки наступним чином.
layout-land-target_version
тобто
макет-земля-19 // цільовий KitKat
так само ви можете створювати свої макети.
Сподіваюся, що це вам допоможе
-19
суфікса? Чи корисно це будь-яким чином?
Спробую пояснити це найближчим часом.
По-перше, ви можете помітити, що тепер вам слід використовувати ConstraintLayout, як цього вимагає google (див. Бібліотеку androix).
У проекті для андроїд-студії ви можете надати макетів, орієнтованих на екран, створюючи додаткові 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
Ви також можете використовувати класифікатор з файлами res ressources, використовуючи dimens.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 / values / dimens.xml
<resources>
<dimen name="grid_view_item_height">70dp</dimen>
</resources>
res / values-land / 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