Функция LazyVerticalGrid
Функция LazyVerticalGrid заполняет экран
ячейками в несколько колонок и листает их по вертикали.
Число колонок задаёт параметр columns
типа
GridCells.
Ячейки описывают в лямбде content
с приёмником
LazyGridScope.
Положение прокрутки хранит state
из
rememberLazyGridState.
Синтаксис
LazyVerticalGrid(columns = GridCells.Fixed(2)) {
item { Text("abcde") }
item { Text("12345") }
}
Параметры
| Параметр | Описание |
|---|---|
columns |
Схема колонок сетки. Класс
GridCells,
например Fixed или Adaptive.
|
content |
Лямбда с ячейками. Приёмник -
LazyGridScope.
|
state |
Состояние прокрутки сетки. Класс
LazyGridState.
|
verticalArrangement |
Распределение строк по вертикали.
Значение класса
Arrangement.
|
horizontalArrangement |
Распределение ячеек внутри строки по горизонтали.
Значение класса
Arrangement.
|
userScrollEnabled |
Если false, жест прокрутки отключён.
|
Пример
Давайте покажем две ячейки в двух колонках:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
LazyVerticalGrid(columns = GridCells.Fixed(2)) {
item { Text(text = "abcde") }
item { Text(text = "12345") }
}
}
}
}
На экране два текста встанут в одну строку, по одному в каждой колонке.
Пример
Давайте возьмём адаптивные колонки с минимальной шириной:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material3.Text
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
LazyVerticalGrid(
columns = GridCells.Adaptive(minSize = 120.dp),
) {
item { Text(text = "abcde") }
item { Text(text = "12345") }
}
}
}
}
На экране сетка сама посчитает число колонок
по ширине экрана, ячейки не будут уже 120 dp.
Смотрите также
-
функция
LazyHorizontalGrid,
которая листает сетку по горизонтали -
класс
GridCells,
который задаёт число колонок или строк -
класс
LazyGridScope,
где объявлены item и items -
функция
LazyColumn,
которая строит один столбец без сетки