Carousel

fun Carousel(state: PagerState, modifier: Modifier = Modifier, style: CarouselStyle = LocalCarouselStyle.current, contentPadding: PaddingValues = PaddingValues(0.dp), gap: Dp = style.dimensions.gap, pageSize: PageSize = PageSize.Fill, snapPosition: SnapPosition = SnapPosition.Start, hasIndicator: Boolean = true, hasControls: Boolean = true, indicatorVisibleCount: Int = 5, beyondViewportPageCount: Int = PagerDefaults.BeyondViewportPageCount, verticalAlignment: Alignment.Vertical = Alignment.CenterVertically, flingBehavior: TargetedFlingBehavior = PagerDefaults.flingBehavior(state = state), userScrollEnabled: Boolean = true, reverseLayout: Boolean = false, key: (index: Int) -> Any? = null, pageNestedScrollConnection: NestedScrollConnection = PagerDefaults.pageNestedScrollConnection(state, Orientation.Horizontal), overscrollEffect: OverscrollEffect? = rememberOverscrollEffect(), pageContent: @Composable PagerScope.(page: Int) -> Unit)

Компонент карусели с горизонтальной прокруткой, поддерживающий индикаторы страниц, навигационные кнопки и различные варианты отображения.

Карусель предоставляет удобный интерфейс для пролистывания контента с возможностью кастомизации внешнего вида, поведения и навигации. Поддерживает как программное управление через PagerState, так и пользовательское взаимодействие.

Пример использования:

val state = rememberPagerState(pageCount = { items.size })

Carousel(
state = state,
hasIndicator = true,
hasControls = true
) { page ->
Card { Text(items[page]) }
}

Parameters

state

состояние карусели, управляющее текущей страницей и прокруткой. Создается через rememberPagerState с указанием количества страниц.

modifier

модификатор для настройки внешнего вида и поведения карусели.

style

стиль карусели, определяющий внешний вид индикаторов, кнопок и их расположение. По умолчанию берется из LocalCarouselStyle.

contentPadding

внутренние отступы контента карусели от её границ. Позволяет создать эффект "отступов" по краям.

gap

промежуток между соседними элементами карусели. По умолчанию берется из стиля карусели.

pageSize

размер страницы относительно видимой области. Может быть PageSize.Fill (на всю ширину), PageSize.Fixed (фиксированный размер)

snapPosition

позиция привязки страницы после прокрутки. Определяет, какая часть страницы будет привязана к началу/центру/концу.

hasIndicator

флаг отображения индикатора страниц (точек внизу карусели).

hasControls

флаг отображения навигационных кнопок "вперед/назад".

indicatorVisibleCount

максимальное количество отображаемых точек-индикаторов. При большем количестве страниц индикатор сворачивается.

beyondViewportPageCount

количество страниц, загружаемых за пределами видимой области. Влияет на производительность и плавность прокрутки.

verticalAlignment

вертикальное выравнивание контента внутри карусели. Полезно при разной высоте элементов.

flingBehavior

поведение при "броске" прокрутки (быстром пролистывании). По умолчанию используется стандартное поведение из PagerDefaults.flingBehavior.

userScrollEnabled

разрешает или запрещает прокрутку пользователем. При false карусель можно листать только программно.

reverseLayout

инвертирует направление прокрутки. При true элементы располагаются справа налево.

key

функция для генерации стабильных ключей страниц. Помогает Compose правильно идентифицировать элементы при изменениях.

pageNestedScrollConnection

обработка вложенной прокрутки. По умолчанию обеспечивает корректную работу карусели внутри прокручиваемых контейнеров.

overscrollEffect

эффект при достижении границ карусели. По умолчанию rememberOverscrollEffect для визуальной обратной связи.

pageContent

композируемая функция для отображения содержимого каждой страницы. Вызывается с индексом страницы в качестве параметра.

See also