Класс LazyGridState
Класс LazyGridState описывает прокрутку
LazyVerticalGrid
и
LazyHorizontalGrid.
Объект получают из
rememberLazyGridState
и передают в параметр state.
Свойства firstVisibleItemIndex
и firstVisibleItemScrollOffset
показывают верхнюю видимую ячейку.
Перейти к ячейке помогают suspend-методы
scrollToItem
и
animateScrollToItem.
Синтаксис
val gridState = rememberLazyGridState()
LazyVerticalGrid(state = gridState, columns = GridCells.Fixed(2)) { }
Методы
| Метод | Описание |
|---|---|
scrollToItem |
Suspend-метод, который сразу прокручивает к ячейке по индексу. |
animateScrollToItem |
Suspend-метод, который плавно прокручивает к ячейке. |
Пример
Давайте прокрутим сетку к последней ячейке:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.rememberCoroutineScope
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val gridState = rememberLazyGridState()
val scope = rememberCoroutineScope()
val lines = List(20) { if (it == 19) "12345" else "abcde" }
Column {
Button(
onClick = {
scope.launch {
gridState.animateScrollToItem(19)
}
},
) {
Text(text = "12345")
}
LazyVerticalGrid(
state = gridState,
columns = GridCells.Fixed(2),
) {
items(lines) { line ->
Text(text = line)
}
}
}
}
}
}
На экране после нажатия сетка доедет
до ячейки со строкой "12345".
Смотрите также
-
функция
rememberLazyGridState,
которая создаёт LazyGridState -
класс
LazyListState,
состояние ленивого списка -
функция
LazyVerticalGrid,
которой передают state -
класс
GridCells,
который задаёт колонки сетки