Группировка элементов
Контейнер
Самый базовый элемент, который отвечает за расположение дочерних элементов — container. Элементы в нем находятся в том порядке, в котором они указаны.
В параметре orientation указываются типы расположения элементов:
-
vertical— для вертикального расположения;Посмотреть интерактивный пример
-
horizontal— для горизонтального расположения;Посмотреть интерактивный пример
-
overlap— с наложением.Посмотреть интерактивный пример
Чтобы элемент занял все свободное место, его ширина должна быть
match_parent. Если таких элементов несколько, они поделят место поровну или распределят его согласно значению параметраweight, если он указан.Чем меньше номер элемента в массиве
itemsприorientation:"overlap", тем ниже он будет расположен. Нулевой элемент контейнера будет в самом низу.
В параметре layout_mode можно указать тип размещения элементов. Значение wrap означает перенос элементов на следующую строку, если они не поместились на предыдущей. По умолчанию layout_mode равен no_wrap.
Посмотреть интерактивный пример
Сетка
Элемент grid используется для сложной структуры табличной верстки. Он позволяет располагать элементы в нескольких столбцах и строках.

Можно объединять ячейки в строке или столбце:
row_span— параметр для объединения строк;column_span— параметр для объединения столбцов.

Посмотреть интерактивный пример
Вес элемента (weight) определяет, сколько пространства он занимает внутри сетки. Может применяться как к ширине, так и к высоте.

Посмотреть интерактивный пример
Пейджер
Элемент pager отображает горизонтальный набор карточек, где полностью видна основная карточка, а соседние показываются частично.

Посмотреть интерактивный пример
Настроить ширину основной карточки возможно в поле layout_mode:
- fixed — показывается фиксированная часть соседних карточек, остальное место занимает основная карточка.
- percentage — ширина основной карточки указывается в процентах от ширины пейджера.
Пейджер удобно использовать вместе с индикатором, чтобы отображать, какая карточка выбрана. Индикатор можно располагать независимо от пейджера. Внешний вид индикатора можно изменить: поддерживается настройка расстояний между индикаторами, формы, цвета, размера, анимаций переключения.

Посмотреть интерактивный пример
Галерея
Картинки внутри элемента gallery могут быть любого размера и содержимого, им необязательно быть однотипными. Параметр item_spacing определяет расстояние между элементами галереи кроме первого и последнего отступа от краев — ими можно управлять с помощью paddings.
Высота галереи устанавливается по высоте самого большого элемента.

Посмотреть интерактивный пример
Табы
Элемент tabs отличается от галереи наличием строки-заголовка. Одномоментно видно только одну страницу, остальные можно переключить свайпами.
Высота табов на разных платформах отличается:
- В Android первый таб оригинальной высоты. Высота оставшихся табов (со второго по последний) одинакова и равна максимальному из их значений.
- В iOS все табы оригинальной высоты.

Посмотреть интерактивный пример
Разделитель
Элемент separator используется для разделения места между элементами.
Стиль разделителя определяется объектом delimiter_style:
{
"type": "separator",
"delimiter_style": {
"color": "#000000",
"orientation": "vertical"
}
}
orientation— ориентация разделителя. Может бытьvertical(вертикальная) илиhorizontal(горизонтальная).color— цвет разделительной полосы. Чтобы она не отображалась, укажите прозрачный цвет#00000000.
Высота разделительной полосы не зависит от высоты самого элемента — она всегда будет равна 1 dp. Если указать размеры разделителя больше — разделительная полоса просто отрисуется посередине.
Посмотреть интерактивный пример
Управление табами, пейджером и галереей
Для управления используйте действия с переключением элементов.
Узнать больше
Вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.