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

Метод animateScrollTo

Метод animateScrollTo класса ScrollState работает как scrollTo, но меняет value с анимацией. Метод suspend, его вызывают внутри корутины. Целевое смещение передают параметром value.

Синтаксис

scrollState.animateScrollTo(500)

Параметры

Параметр Описание
value Смещение прокрутки в пикселях, к которому ведут анимацию.

Пример

Давайте плавно прокрутим Column к низу:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val scrollState = rememberScrollState() val scope = rememberCoroutineScope() Column { Button( onClick = { scope.launch { scrollState.animateScrollTo(scrollState.maxValue) } }, ) { Text(text = "12345") } Column( modifier = Modifier.verticalScroll(scrollState), ) { repeat(20) { Text(text = "abcde") } Text(text = "12345") } } } } }

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

Пример

Давайте вернём прокрутку к началу при повторном нажатии:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val scrollState = rememberScrollState() val scope = rememberCoroutineScope() Column { Button( onClick = { scope.launch { scrollState.animateScrollTo(0) } }, ) { Text(text = "abcde") } Column( modifier = Modifier.verticalScroll(scrollState), ) { repeat(18) { Text(text = "12345") } } } } } }

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

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

  • метод scrollTo,
    который меняет value без анимации
  • метод animateScrollToItem,
    плавная прокрутка ленивого списка
  • метод verticalScroll,
    который использует ScrollState
  • класс ScrollState,
    где объявлен animateScrollTo
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить