---
title: "HorizontalPageIndicator"
description: "A horizontal indicator for a Pager, representing the currently active page and total pages drawn
using a `Shape`. It shows up to 6 pages on the screen and doesn't represent the exact page index
if there are more than 6 pages. Instead of showing the exact position, `HorizontalPageIndicator`
shows a half-size indicator on the left or on the right if there are more pages."
type: "component"
---

<div class='type'>Composable Component</div>



A horizontal indicator for a Pager, representing the currently active page and total pages drawn
using a `Shape`. It shows up to 6 pages on the screen and doesn't represent the exact page index
if there are more than 6 pages. Instead of showing the exact position, `HorizontalPageIndicator`
shows a half-size indicator on the left or on the right if there are more pages.

<a id='references'></a>

<div class='sourceset sourceset-android'>Android</div>


```kotlin
@Composable
public fun HorizontalPageIndicator(
    pageIndicatorState: PageIndicatorState,
    modifier: Modifier = Modifier,
    indicatorStyle: PageIndicatorStyle = PageIndicatorDefaults.style(),
    selectedColor: Color = MaterialTheme.colors.onBackground,
    unselectedColor: Color = selectedColor.copy(alpha = 0.3f),
    indicatorSize: Dp = 6.dp,
    spacing: Dp = 4.dp,
    indicatorShape: Shape = CircleShape,
)
```


#### Parameters

| | |
| --- | --- |
| pageIndicatorState | The state object of a `HorizontalPageIndicator` to be used to observe the Pager's state. |
| modifier | Modifier to be applied to the `HorizontalPageIndicator` |
| indicatorStyle | The style of `HorizontalPageIndicator` - may be linear or curved. By default determined by the screen shape. |
| selectedColor | The color of the selected `HorizontalPageIndicator` item |
| unselectedColor | The color of unselected `HorizontalPageIndicator` items. Defaults to `selectedColor` with 30% alpha |
| indicatorSize | The size of each `HorizontalPageIndicator` item in `Dp` |
| spacing | The spacing between indicator items in `Dp` |
| indicatorShape | The shape of each `HorizontalPageIndicator` item. Defaults to `CircleShape` |






## Code Examples
### HorizontalPageIndicatorSample
```kotlin
@Composable
fun HorizontalPageIndicatorSample() {
    val maxPages = 9
    var selectedPage by remember { mutableStateOf(0) }
    var finalValue by remember { mutableStateOf(0) }
    val animatedSelectedPage by
        animateFloatAsState(targetValue = selectedPage.toFloat()) { finalValue = it.toInt() }
    val pageIndicatorState: PageIndicatorState = remember {
        object : PageIndicatorState {
            override val pageOffset: Float
                get() = animatedSelectedPage - finalValue
            override val selectedPage: Int
                get() = finalValue
            override val pageCount: Int
                get() = maxPages
        }
    }
    Box(modifier = Modifier.fillMaxSize().padding(6.dp)) {
        InlineSlider(
            modifier = Modifier.align(Alignment.Center),
            value = selectedPage,
            increaseIcon = { Icon(InlineSliderDefaults.Increase, "Increase") },
            decreaseIcon = { Icon(InlineSliderDefaults.Decrease, "Decrease") },
            valueProgression = 0 until maxPages,
            onValueChange = { selectedPage = it },
        )
        HorizontalPageIndicator(pageIndicatorState = pageIndicatorState)
    }
}
```

