Метод scrollToItem
Метод scrollToItem класса
LazyGridState
сдвигает сетку так, чтобы ячейка с индексом
index оказалась у начала видимой области.
Метод suspend, его вызывают
внутри корутины.
Параметр scrollOffset
задаёт дополнительный сдвиг в пикселях.
Синтаксис
gridState.scrollToItem(index = 8)
Параметры
| Параметр | Описание |
|---|---|
index |
Индекс ячейки в порядке компоновки сетки. |
scrollOffset |
Смещение ячейки от начала viewport в пикселях. |
Пример
Давайте по кнопке перейдём к дальней ячейке:
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(16) { if (it == 15) "12345" else "abcde" }
Column {
Button(
onClick = {
scope.launch {
gridState.scrollToItem(15)
}
},
) {
Text(text = "12345")
}
LazyVerticalGrid(
state = gridState,
columns = GridCells.Fixed(2),
) {
items(lines) { line ->
Text(text = line)
}
}
}
}
}
}
На экране сетка сразу покажет последнюю ячейку
со строкой "12345".
Пример
Давайте вызовем scrollToItem при старте экрана:
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.items
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.material3.Text
import androidx.compose.runtime.LaunchedEffect
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val gridState = rememberLazyGridState()
val lines = List(12) { "abcde" }
LaunchedEffect(Unit) {
gridState.scrollToItem(8)
}
LazyVerticalGrid(
state = gridState,
columns = GridCells.Fixed(2),
) {
items(lines) { line ->
Text(text = line)
}
}
}
}
}
На экране при открытии видна область сетки вокруг девятой ячейки.
Смотрите также
-
метод
animateScrollToItem,
который прокручивает с анимацией -
метод
scrollToItem,
аналог для списка -
класс
LazyGridState,
у которого вызывают scrollToItem -
функция
LazyVerticalGrid,
к которой привязан gridState