Класс ScrollState
Класс ScrollState описывает прокрутку
содержимого, к которому применили
verticalScroll
или
horizontalScroll.
Объект получают из
rememberScrollState.
Свойство value - текущее смещение в пикселях,
maxValue - максимально возможное.
Suspend-методы
scrollTo
и
animateScrollTo
задают смещение программно.
Синтаксис
val scrollState = rememberScrollState()
Modifier.verticalScroll(scrollState)
Методы
| Метод | Описание |
|---|---|
scrollTo |
Suspend-метод, который сразу ставит смещение value. |
animateScrollTo |
Suspend-метод, который плавно меняет 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".
Смотрите также
-
функция
rememberScrollState,
которая создаёт ScrollState -
метод
verticalScroll,
которому передают ScrollState -
класс
LazyListState,
состояние ленивого списка -
функция
Column,
которую часто прокручивают через verticalScroll