Функция rememberLazyGridState
Функция rememberLazyGridState возвращает
LazyGridState
и сохраняет его между перерисовками.
Начальную видимую ячейку задают через
initialFirstVisibleItemIndex
и initialFirstVisibleItemScrollOffset.
Объект передают в state
у
LazyVerticalGrid
или
LazyHorizontalGrid.
Синтаксис
val gridState = rememberLazyGridState()
Параметры
| Параметр | Описание |
|---|---|
initialFirstVisibleItemIndex |
Индекс первой видимой ячейки при первом показе.
По умолчанию 0.
|
initialFirstVisibleItemScrollOffset |
Смещение первой видимой ячейки в пикселях.
По умолчанию 0.
|
Пример
Давайте привяжем состояние к LazyVerticalGrid:
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.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val gridState = rememberLazyGridState()
LazyVerticalGrid(
state = gridState,
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.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val gridState = rememberLazyGridState(
initialFirstVisibleItemIndex = 2,
)
LazyVerticalGrid(
state = gridState,
columns = GridCells.Fixed(2),
) {
item { Text(text = "abcde") }
item { Text(text = "12345") }
item { Text(text = "abcde") }
}
}
}
}
На экране первой видимой станет третья ячейка, предыдущие уйдут за верхний край.
Смотрите также
-
класс
LazyGridState,
который возвращает rememberLazyGridState -
функция
rememberLazyListState,
аналог для списка -
класс
GridCells,
который задаёт columns или rows -
метод
scrollToItem,
который меняет положение сетки