Класс PagerState
Класс PagerState из
androidx.compose.foundation.pager
описывает, какая страница сейчас на экране
и как идёт жест листания.
Объект получают из
rememberPagerState
с лямбдой pageCount.
Свойство currentPage
даёт индекс открытой страницы.
Переключить страницу программно помогают suspend-методы
scrollToPage
и
animateScrollToPage.
Синтаксис
val pagerState = rememberPagerState(pageCount = { 3 })
HorizontalPager(state = pagerState) { page -> }
Методы
| Метод | Описание |
|---|---|
scrollToPage |
Suspend-метод, который сразу открывает страницу по номеру. |
animateScrollToPage |
Suspend-метод, который плавно листает к странице. |
Пример
Давайте переключим страницу кнопкой через animateScrollToPage:
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.animateScrollToPage(1)
}
},
) {
Text(text = "12345")
}
HorizontalPager(state = pagerState) { page ->
val text = if (page == 0) "abcde" else "12345"
Text(text = text)
}
}
}
}
}
На экране после нажатия pager покажет
вторую страницу с текстом "12345".
Смотрите также
-
функция
rememberPagerState,
которая создаёт PagerState -
функция
HorizontalPager,
которой передают state -
функция
VerticalPager,
вертикальный вариант pager -
класс
LazyListState,
состояние обычного ленивого списка