Метод scrollTo
Метод scrollTo класса
ScrollState
задаёт новое значение value
без анимации.
Метод suspend, его вызывают
внутри корутины.
Состояние связано с
verticalScroll
или
horizontalScroll.
Синтаксис
scrollState.scrollTo(500)
Параметры
| Параметр | Описание |
|---|---|
value |
Новое смещение прокрутки в пикселях.
Обычно от 0 до maxValue.
|
Пример
Давайте по кнопке прокрутим 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.scrollTo(800)
}
},
) {
Text(text = "12345")
}
Column(
modifier = Modifier.verticalScroll(scrollState),
) {
repeat(25) {
Text(text = "abcde")
}
}
}
}
}
}
На экране содержимое сразу сдвинется вниз
примерно на 800 пикселей.
Пример
Давайте прокрутим к концу через maxValue:
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.Text
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val scrollState = rememberScrollState()
LaunchedEffect(scrollState.maxValue) {
if (scrollState.maxValue > 0) {
scrollState.scrollTo(scrollState.maxValue)
}
}
Column(
modifier = Modifier.verticalScroll(scrollState),
) {
repeat(15) { Text(text = "abcde") }
Text(text = "12345")
}
}
}
}
На экране после измерения высоты
станет видна последняя строка "12345".
Смотрите также
-
метод
animateScrollTo,
который меняет value с анимацией -
функция
rememberScrollState,
которая создаёт scrollState -
метод
scrollToItem,
прокрутка ленивого списка к пункту -
класс
ScrollState,
у которого вызывают scrollTo