Класс 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