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

Метод scrollToItem

Метод scrollToItem класса LazyListState сдвигает список так, чтобы пункт с индексом index оказался у начала видимой области. Метод suspend, его вызывают внутри корутины через rememberCoroutineScope или LaunchedEffect. Дополнительный сдвиг задаёт параметр scrollOffset в пикселях.

Синтаксис

listState.scrollToItem(index = 5)

Параметры

Параметр Описание
index Индекс пункта списка, к которому нужно прокрутить.
scrollOffset Смещение пункта от начала viewport в пикселях. По умолчанию 0.

Пример

Давайте по кнопке перейдём к десятому пункту без анимации:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState 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 listState = rememberLazyListState() val scope = rememberCoroutineScope() val lines = List(20) { "abcde" } + listOf("12345") Column { Button( onClick = { scope.launch { listState.scrollToItem(20) } }, ) { Text(text = "12345") } LazyColumn(state = listState) { items(lines) { line -> Text(text = line) } } } } } }

На экране после нажатия список сразу покажет строку "12345" в начале видимой области.

Пример

Давайте вызовем scrollToItem из LaunchedEffect при старте:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Text import androidx.compose.runtime.LaunchedEffect class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val listState = rememberLazyListState() val lines = List(15) { "abcde" } LaunchedEffect(Unit) { listState.scrollToItem(10) } LazyColumn(state = listState) { items(lines) { line -> Text(text = line) } } } } }

На экране при открытии экрана список сразу окажется на одиннадцатом пункте.

Смотрите также

  • метод animateScrollToItem,
    который прокручивает с анимацией
  • класс LazyListState,
    у которого вызывают scrollToItem
  • метод scrollToItem,
    аналог для ленивой сетки
  • функция rememberLazyListState,
    которая создаёт состояние списка
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить