Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
208 of 502 menu
◀ ▶

Метод 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
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить