Функция HorizontalPager
Функция HorizontalPager из пакета
androidx.compose.foundation.pager
рисует одну страницу на весь контейнер
и переключает их свайпом влево и вправо.
Состояние хранит параметр state
типа
PagerState,
который создают через
rememberPagerState
с лямбдой pageCount.
Содержимое каждой страницы задают в лямбде pageContent
по номеру страницы.
Синтаксис
val pagerState = rememberPagerState(pageCount = { 2 })
HorizontalPager(state = pagerState) { page ->
Text("page $page")
}
Параметры
| Параметр | Описание |
|---|---|
state |
Состояние pager. Класс
PagerState
из rememberPagerState.
|
pageContent |
Лямбда с содержимым страницы. Номер страницы
передают параметром page.
|
pageSpacing |
Зазор между соседними страницами в dp. |
userScrollEnabled |
Если false, свайп между страницами отключён.
|
reverseLayout |
Если true, направление листания меняется на противоположное.
|
Пример
Давайте покажем две страницы с разным текстом:
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",
свайп влево покажет "12345".
Пример
Давайте откроем вторую страницу сразу через initialPage:
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(
initialPage = 1,
pageCount = { 2 },
)
HorizontalPager(state = pagerState) { page ->
val text = if (page == 0) "abcde" else "12345"
Text(text = text)
}
}
}
}
На экране сразу появится текст "12345"
со второй страницы.
Смотрите также
-
функция
VerticalPager,
которая листает страницы по вертикали -
функция
rememberPagerState,
которая запоминает открытую страницу -
класс
PagerState,
у которого есть scrollToPage -
функция
LazyRow,
которая прокручивает пункты без постраничного режима