HorizontalUncontainedCarousel
Composable Component
A horizontal carousel that displays its items with the given size except for one item at the end that is cut off.
Common
@ExperimentalMaterial3Api
@Composable
fun HorizontalUncontainedCarousel(
state: CarouselState,
itemWidth: Dp,
modifier: Modifier = Modifier,
itemSpacing: Dp = 0.dp,
flingBehavior: TargetedFlingBehavior = CarouselDefaults.noSnapFlingBehavior(),
userScrollEnabled: Boolean = true,
contentPadding: PaddingValues = PaddingValues(0.dp),
content: @Composable CarouselItemScope.(itemIndex: Int) -> Unit,
)
Parameters
state | The state object to be used to control the carousel's state |
itemWidth | The width of items in the carousel |
modifier | A modifier instance to be applied to this carousel container |
itemSpacing | The amount of space used to separate items in the carousel |
flingBehavior | The TargetedFlingBehavior to be used for post scroll gestures |
userScrollEnabled | whether the scrolling via the user gestures or accessibility actions is allowed. |
contentPadding | a padding around the whole content. This will add padding for the content after it has been clipped. You can use it to add a padding before the first item or after the last one. Use itemSpacing to add spacing between the items. |
content | The carousel's content Composable |
Common
Deprecated Kept for binary compatibility
@ExperimentalMaterial3Api
@Composable
fun HorizontalUncontainedCarousel(
state: CarouselState,
itemWidth: Dp,
modifier: Modifier = Modifier,
itemSpacing: Dp = 0.dp,
flingBehavior: TargetedFlingBehavior = CarouselDefaults.noSnapFlingBehavior(),
contentPadding: PaddingValues = PaddingValues(0.dp),
content: @Composable CarouselItemScope.(itemIndex: Int) -> Unit,
) =
HorizontalUncontainedCarousel(
state = state,
itemWidth = itemWidth,
modifier = modifier,
itemSpacing = itemSpacing,
flingBehavior = flingBehavior,
userScrollEnabled = true,
contentPadding = contentPadding,
content = content,
)
Code Examples
HorizontalUncontainedCarouselSample
@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun HorizontalUncontainedCarouselSample() {
data class CarouselItem(
val id: Int,
@DrawableRes val imageResId: Int,
@StringRes val contentDescriptionResId: Int,
)
val items =
listOf(
CarouselItem(0, R.drawable.carousel_image_1, R.string.carousel_image_1_description),
CarouselItem(1, R.drawable.carousel_image_2, R.string.carousel_image_2_description),
CarouselItem(2, R.drawable.carousel_image_3, R.string.carousel_image_3_description),
CarouselItem(3, R.drawable.carousel_image_4, R.string.carousel_image_4_description),
CarouselItem(4, R.drawable.carousel_image_5, R.string.carousel_image_5_description),
)
HorizontalUncontainedCarousel(
state = rememberCarouselState { items.count() },
modifier = Modifier.width(412.dp).height(221.dp),
itemWidth = 186.dp,
itemSpacing = 8.dp,
contentPadding = PaddingValues(horizontal = 16.dp),
) { i ->
val item = items[i]
Image(
modifier = Modifier.height(205.dp).maskClip(MaterialTheme.shapes.extraLarge),
painter = painterResource(id = item.imageResId),
contentDescription = stringResource(item.contentDescriptionResId),
contentScale = ContentScale.Crop,
)
}
}