Пока модные и современные тестируют Jetpack Compose в новых проектах, мы с вами поговорим о старой доброй XML разметке.

Буквально по паре предложений о каждом Layout, чтобы составить общее представление об их применении. Для тех, кто хочет подробностей — прикрепил дополнительные ссылки.

Статья рассчитана на тех, кто только начинает разработку на Android, но, возможно, и более опытные разработчики почерпнут для себя полезные сведения.

1. FrameLayout

  • Самый простой тип разметки.

  • Все дочерние элементы FrameLayout прикрепляются к верхнему левому углу экрана.

В разметке FrameLayout нельзя определить различное местоположение для дочернего объекта. Последующие дочерние объекты View будут просто рисоваться поверх предыдущих компонентов, частично или полностью затеняя их, если находящийся сверху объект непрозрачен, поэтому единственный дочерний элемент для FrameLayout обычно растянут до размеров родительского контейнера и имеет атрибуты:

android:layout_width="match_parent" 
android:layout_height="match_parent" 

Подробнее: FrameLayout - Александр Климов

2. CoordinatorLayout

  • Является наследником стандартного FrameLayout.

  • Главная фишка CoordinatorLayout — свои Default behavior, с помощью Behaviors можно управлять дочерней View.

Основной привлекательностью CoordinatorLayout является его способность координировать анимацию и переходы представлений в самом файле XML.

Подробнее:
CoordinatorLayout - learntutorials.net
CoordinatorLayout - temofeev.ru

3. LinearLayout

  • Представлен двумя вариантами — Horizontal и Vertical.

  • Выравнивает все дочерние объекты в одном направлении — вертикально или горизонтально.

Направление задается при помощи атрибута ориентации android:orientation:

android:orientation="horizontal"
android:orientation="vertical"

Подробнее: LinearLayout - Александр Климов

4. TableLayout

  • Отображает элементы в виде таблицы, по строкам и столбцам.

  • Не отображает линии обрамления для строк, столбцов или ячеек.

  • Количество ячеек в разных строках может отличаться.

  • При формировании строки некоторые ячейки можно оставлять пустыми.

Для формирования строк интерфейса необходимо использовать объект TableRow, который должен быть дочерним элементом контейнера TableLayout. Каждый компонент TableRow определяет единственную строку в таблице. Ячейки строки являются контейнерами для других объектов. В ячейку можно вкладывать другой TableLayout или LinearLayout. Этот вид разметки удобно использовать, например, при создании логических игр типа Судоку, Крестики-Нолики и т.п.

Подробнее:
TableLayout - java-online.ru
TableLayout - Александр Климов

5. GridLayout

  • Для любого компонента можно указать строку и колонку, и в этом месте таблицы он будет размещён.

  • Компоненты могут растягиваться на несколько ячеек таблицы.

  • В одну ячейку можно поместить несколько компонентов.

В данной разметке нельзя использовать атрибут веса, поскольку он не сработает в дочерних представлениях GridLayout. Используйте атрибут layout_gravity.

Подробнее:
GridLayout - metanit.com
GridLayout - Александр Климов

6. SwipeRefreshLayout

  • Работает по принципу "проведи пальцем вниз, чтобы выполнить какую-то функцию (например, обновить)".

Подробнее:
SwipeRefreshLayout - habr.com
SwipeRefreshLayout - javadevblog.com
SwipeRefreshLayout - Александр Климов

7. RelativeLayout

  • Располагает дочерние элементы относительно позиции других дочерних элементов разметки или относительно области самой разметки RelativeLayout.

Подробнее:
RelativeLayout - metanit.com
RelativeLayout - Александр Климов


Бонус для тех, кто любит не только читать статьи, а еще и смотреть видео:

Видео Основы XML-разметки интерфейса пользователя - Roman Andrushchenko
Видео FrameLayout, LinearLayout, GridLayout - Roman Andrushchenko
Видео Краткий обзор базовых UI-компонентов - Roman Andrushchenko


Хм, а где же ConstraintLayout? Ты что, забыл про самый крутой макет?

Дело в том, что у ConstraintLayout столько возможностей и "фишек", что логичнее посвятить ему отдельную статью, а не пытаться впихнуть все в первую часть.

Аналогично и с MotionLayout  —  про анимацию есть смысл рассказать в последующих частях обзорной статьи.

Продолжение: Краткий обзор Layout XML в Android. Часть 2

Комментарии (2)


  1. Rusrst
    00.00.0000 00:00
    +6

    Мда уж, перечисление базовых контейнеров уже в отдельную статью выносят... Меня только терзает вопрос, а зачем? Ну полно же статей по layout xml, но нет, нужно просто перечислить и дать ссылки на чужие статьи...


  1. chetl33
    00.00.0000 00:00

    Крутая статья!

    Жду вторую часть