Метод scrollToPage
Метод scrollToPage класса
PagerState
ставит текущей страницу с индексом page
без анимации листания.
Метод suspend, его вызывают
внутри корутины.
Необязательный pageOffsetFraction
задаёт долю смещения между страницами.
Синтаксис
pagerState.scrollToPage(page = 1)
Параметры
| Параметр | Описание |
|---|---|
page |
Номер страницы от 0 до pageCount - 1.
|
pageOffsetFraction |
Смещение между страницами от 0 до 1.
По умолчанию 0.
|
Пример
Давайте по кнопке сразу откроем вторую страницу:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
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 pagerState = rememberPagerState(pageCount = { 2 })
val scope = rememberCoroutineScope()
Column {
Button(
onClick = {
scope.launch {
pagerState.scrollToPage(1)
}
},
) {
Text(text = "12345")
}
HorizontalPager(state = pagerState) { page ->
val text = if (page == 0) "abcde" else "12345"
Text(text = text)
}
}
}
}
}
На экране без анимации появится страница
с текстом "12345".
Пример
Давайте вызовем scrollToPage из LaunchedEffect:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.Text
import androidx.compose.runtime.LaunchedEffect
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val pagerState = rememberPagerState(pageCount = { 3 })
LaunchedEffect(Unit) {
pagerState.scrollToPage(2)
}
HorizontalPager(state = pagerState) { page ->
Text(text = if (page == 2) "12345" else "abcde")
}
}
}
}
На экране при открытии сразу будет третья страница
с текстом "12345".
Смотрите также
-
метод
animateScrollToPage,
который листает с анимацией -
класс
PagerState,
у которого вызывают scrollToPage -
функция
rememberPagerState,
которая задаёт pageCount -
функция
HorizontalPager,
к которому привязан pagerState