Сетка

Grid — это API Jetpack Compose, позволяющий гибко реализовывать двухмерную компоновку. С помощью этого API вы можете отображать элементы в многоколоночной или многострочной компоновке, адаптирующейся к доступному размеру контейнера.

Гибкая и адаптируемая двухмерная компоновка с использованием сетки.
Рисунок 1. Гибкая и адаптивная двухмерная компоновка с использованием Grid .

Чем Grid отличается от аналогичных компонуемых объектов?

Compose уже предлагает аналогичные компоненты, такие как LazyVerticalGrid . Эти компоненты в основном предназначены для визуализации больших однородных наборов данных — например, для отображения каталога контента в приложении для потокового видео. Эти компоненты НЕ предназначены для структурной компоновки экрана или сложных компонентов.

Также можно реализовать двухмерную компоновку, комбинируя несколько элементов типа Row и Column . Однако у этого подхода есть некоторые недостатки, такие как глубокая иерархия и сложности с адаптацией.

В таблице ниже представлен обзор того, какие шаблоны подходят для каждого API:

Компонент Цель
LazyVerticalGrid , LazyStaggeredGrid , LazyHorizontalGrid Визуализация больших однородных наборов данных, требующих отложенной загрузки.
Row , Column , FlexBox Одномерная планировка
Grid Двумерная компоновка

Терминология

Ознакомьтесь со следующей терминологией, чтобы понять, как работает Grid .

Линия сетки

Сетка состоит из линий, идущих горизонтально и вертикально. Если ваша сетка имеет три строки, то в ней четыре горизонтальные линии, включая линию после последней строки. На следующем изображении каждая пунктирная линия представляет собой линию сетки:

Сетка состоит из четырех горизонтальных и трех вертикальных линий.
Рисунок 2. Сетка состоит из четырех горизонтальных и трех вертикальных линий.

Трасса сетки

Полоса сетки — это пространство между двумя линиями сетки. Полоса строки находится между двумя горизонтальными линиями, а полоса столбца — между двумя вертикальными линиями. Чтобы определить размер этих полос, задайте им размер при создании сетки.

Сетки для первого ряда.
Рисунок 3. Сетка для первого ряда.

Сетчатая ячейка

Ячейка сетки — это точка пересечения строки и столбца.

Ячейка сетки, являющаяся пересечением второй строки и второго столбца.
Рисунок 4. Ячейка сетки, являющаяся пересечением второй строки и второго столбца.

Сетка

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

Сетчатая область, состоящая из четырех ячеек.
Рисунок 5. Сетчатая область, состоящая из четырех ячеек.

Разрыв в сети

Промежуток между дорожками сетки — это промежутк между ними. В этот промежуток нельзя поместить элемент пользовательского интерфейса, но можно перекрыть его.

Между первым и вторым столбцами имеется зазор в сетке.
Рисунок 6. Зазор в сетке между первым и вторым столбцами.