Функция rememberPagerState
Функция rememberPagerState из
androidx.compose.foundation.pager
возвращает
PagerState
и сохраняет его между перерисовками.
Число страниц задают лямбдой pageCount,
стартовую страницу - параметром initialPage.
Объект передают в state
у
HorizontalPager
и
VerticalPager.
Синтаксис
val pagerState = rememberPagerState(pageCount = { 3 })
Параметры
| Параметр | Описание |
|---|---|
pageCount |
Лямбда, которая возвращает число страниц pager. Может меняться при обновлении данных. |
initialPage |
Номер страницы при первом показе.
По умолчанию 0.
|
initialPageOffsetFraction |
Начальное смещение между страницами от 0 до 1.
|
Пример
Давайте создадим pager на две страницы:
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
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val pagerState = rememberPagerState(pageCount = { 2 })
HorizontalPager(state = pagerState) { page ->
val text = if (page == 0) "abcde" else "12345"
Text(text = text)
}
}
}
}
На экране откроется первая страница "abcde",
вторая доступна свайпом.
Пример
Давайте изменим pageCount, когда данные подгрузились:
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.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
var pageCount by remember { mutableIntStateOf(1) }
val pagerState = rememberPagerState(pageCount = { pageCount })
HorizontalPager(state = pagerState) { page ->
Text(text = if (page == 0) "abcde" else "12345")
}
pageCount = 2
}
}
}
На экране после обновления pageCount
можно будет листать ко второй странице "12345".
Смотрите также
-
класс
PagerState,
который возвращает rememberPagerState -
метод
scrollToPage,
который меняет текущую страницу -
функция
HorizontalPager,
которой передают state -
функция
rememberLazyListState,
аналог для ленивого списка