Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
218 of 502 menu
◀ ▶

Функция 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,
    аналог для ленивого списка
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить