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

Метод animateScrollToItem

Метод animateScrollToItem класса LazyListState работает как scrollToItem, но сдвигает список с анимацией. Метод suspend, его вызывают внутри корутины. Индекс пункта задают параметром index, дополнительный сдвиг - scrollOffset.

Синтаксис

listState.animateScrollToItem(index = 5)

Параметры

Параметр Описание
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.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(25) { "abcde" } + listOf("12345") Column { Button( onClick = { scope.launch { listState.animateScrollToItem(25) } }, ) { Text(text = "12345") } LazyColumn(state = listState) { items(lines) { line -> Text(text = line) } } } } } }

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

Пример

Давайте прокрутим к середине списка при появлении экрана:

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(30) { if (it == 15) "12345" else "abcde" } LaunchedEffect(Unit) { listState.animateScrollToItem(15) } LazyColumn(state = listState) { items(lines) { line -> Text(text = line) } } } } }

На экране при открытии анимация остановится на строке "12345" в середине списка.

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

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