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

Класс LazyListState

Класс LazyListState описывает прокрутку LazyColumn и LazyRow. Объект получают из rememberLazyListState и передают в параметр state. Свойства firstVisibleItemIndex и firstVisibleItemScrollOffset показывают верхний видимый пункт. Перейти к пункту помогают suspend-методы scrollToItem и animateScrollToItem.

Синтаксис

val listState = rememberLazyListState() LazyColumn(state = listState) { /* items */ }

Методы

Метод Описание
scrollToItem Suspend-метод, который сразу прокручивает к пункту по индексу.
animateScrollToItem Suspend-метод, который плавно прокручивает к пункту.

Пример

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

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.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(30) { if (it == 29) "12345" else "abcde" } LazyColumn(state = listState) { items(lines) { line -> Text(text = line) } } Button( onClick = { scope.launch { listState.animateScrollToItem(29) } }, ) { Text(text = "12345") } } } }

На экране после нажатия кнопки список плавно дойдёт до последней строки "12345".

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

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