Reference version

This is documentation for the next SDK version. For up-to-date documentation, see the latest version (SDK 55).

轮播

用于显示可滚动项目集合的 Jetpack Compose 轮播组件。

Android

For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

Expo UI 提供了三个轮播组件,与官方 Jetpack Compose Carousel API 一致:HorizontalCenteredHeroCarouselHorizontalMultiBrowseCarouselHorizontalUncontainedCarousel

安装

Terminal
npx expo install @expo/ui

If you are installing this in an existing React Native app, make sure to install expo in your project.

用法

HorizontalCenteredHeroCarousel

在两个较小的预览项之间居中显示一个大型主视觉项——非常适合突出展示电影海报等内容。

CenteredHeroExample.tsx
import { Host, HorizontalCenteredHeroCarousel, Box, Text } from '@expo/ui/jetpack-compose'; import { size, background } from '@expo/ui/jetpack-compose/modifiers'; export default function CenteredHeroExample() { const colors = ['#6200EE', '#03DAC5', '#FF5722', '#4CAF50', '#2196F3']; return ( <Host matchContents> <HorizontalCenteredHeroCarousel itemSpacing={8}> {colors.map((color, index) => ( <Box key={index} contentAlignment="center" modifiers={[size(300, 200), background(color)]}> <Text color="#FFFFFF">幻灯片 {index + 1}</Text> </Box> ))} </HorizontalCenteredHeroCarousel> </Host> ); }

HorizontalMultiBrowseCarousel

在一个大项旁边显示较小的预览项,让用户浏览接下来会看到的内容。

MultiBrowseExample.tsx
import { Host, HorizontalMultiBrowseCarousel, Box, Text } from '@expo/ui/jetpack-compose'; import { size, background } from '@expo/ui/jetpack-compose/modifiers'; export default function MultiBrowseExample() { const colors = ['#6200EE', '#03DAC5', '#FF5722', '#4CAF50', '#2196F3']; return ( <Host matchContents> <HorizontalMultiBrowseCarousel preferredItemWidth={200} itemSpacing={8} flingBehavior="singleAdvance"> {colors.map((color, index) => ( <Box key={index} contentAlignment="center" modifiers={[size(200, 180), background(color)]}> <Text color="#FFFFFF">卡片 {index + 1}</Text> </Box> ))} </HorizontalMultiBrowseCarousel> </Host> ); }

HorizontalUncontainedCarousel

每个项都有固定宽度,并支持自由形式滚动。

UncontainedExample.tsx
import { Host, HorizontalUncontainedCarousel, Box, Text } from '@expo/ui/jetpack-compose'; import { size, background } from '@expo/ui/jetpack-compose/modifiers'; export default function UncontainedExample() { const items = ['照片 1', '照片 2', '照片 3', '照片 4', '照片 5']; return ( <Host matchContents> <HorizontalUncontainedCarousel itemWidth={160} itemSpacing={12} contentPadding={{ start: 16, top: 0, end: 16, bottom: 0 }}> {items.map(item => ( <Box key={item} contentAlignment="center" modifiers={[size(160, 180), background('#3F51B5')]}> <Text color="#FFFFFF">{item}</Text> </Box> ))} </HorizontalUncontainedCarousel> </Host> ); }

API

import { HorizontalCenteredHeroCarousel, HorizontalMultiBrowseCarousel, HorizontalUncontainedCarousel, } from '@expo/ui/jetpack-compose';

Components

HorizontalCenteredHeroCarousel

Android

Type: React.Element<ComponentType<HorizontalCenteredHeroCarouselProps>>

A hero carousel that centers one large item between two small peek items, matching Compose's HorizontalCenteredHeroCarousel.

HorizontalCenteredHeroCarouselProps

maxItemWidth

Android
Optional • Type: number

Maximum width of the hero item in dp. When unspecified, the hero item will be as wide as possible.

maxSmallItemWidth

Android
Optional • Type: number • Default: CarouselDefaults.MaxSmallItemSize

Maximum width of small peek items in dp.

minSmallItemWidth

Android
Optional • Type: number • Default: CarouselDefaults.MinSmallItemSize

Minimum width of small peek items in dp.

Inherited Props

HorizontalMultiBrowseCarousel

Android

Type: React.Element<ComponentType<HorizontalMultiBrowseCarouselProps>>

A carousel that shows a large item alongside smaller peek items, matching Compose's HorizontalMultiBrowseCarousel.

HorizontalMultiBrowseCarouselProps

maxSmallItemWidth

Android
Optional • Type: number • Default: CarouselDefaults.MaxSmallItemSize

Maximum width of small peek items in dp.

minSmallItemWidth

Android
Optional • Type: number • Default: CarouselDefaults.MinSmallItemSize

Minimum width of small peek items in dp.

preferredItemWidth

Android
Type: number

The preferred width of the large item in dp.

Inherited Props

HorizontalUncontainedCarousel

Android

Type: React.Element<ComponentType<HorizontalUncontainedCarouselProps>>

A carousel where each item has a fixed width with free-form scrolling, matching Compose's HorizontalUncontainedCarousel.

HorizontalUncontainedCarouselProps

itemWidth

Android
Type: number

The width of each item in dp.

Inherited Props

Types

CarouselCommonConfig

Android

Shared props across all carousel components.

PropertyTypeDescription
childrenReact.ReactNode

Children to render as carousel items.

contentPadding(optional)number | PaddingValuesRecord

Padding for carousel content (dp or object).

flingBehavior(optional)FlingBehaviorType

Controls snapping behavior when the user flings the carousel. 'singleAdvance' snaps to the next item, 'noSnap' allows free scrolling.

itemSpacing(optional)number

Spacing between items in dp.

Default:0
modifiers(optional)ModifierConfig[]

Modifiers for the component.

userScrollEnabled(optional)boolean

Whether the user can scroll the carousel.

Default:true

FlingBehaviorType

Android

Literal Type: string

Fling behavior type for controlling carousel snapping.

Acceptable values are: 'singleAdvance' | 'noSnap'

PaddingValuesRecord

Android

Per-side padding values in dp for carousel content.

PropertyTypeDescription
bottom(optional)number
-
end(optional)number
-
start(optional)number
-
top(optional)number
-