---
title: "OneHandedGestureIndicator"
description: "A wrapper that replaces the content to indicate to the user that a gesture action is available."
type: "component"
lastmod: "2026-05-20T01:13:55.446464Z"
---
## API Reference

### OneHandedGestureIndicator

> Source set: Android

```kotlin
@Composable
public fun OneHandedGestureIndicator(
    gestureIndicatorVisible: Boolean,
    onGestureIndicatorFinished: () -> Unit,
    modifier: Modifier = Modifier,
    gestureIndicatorSize: GestureIndicatorSize = GestureIndicatorSize.Medium,
    gestureIndicatorTint: Color = MaterialTheme.colorScheme.onPrimary,
    content: @Composable BoxScope.() -> Unit,
)
```

#### Parameters

| | |
| --- | --- |
| gestureIndicatorVisible | A boolean flag that triggers the transition from `content` to the indicator. While true, the `content` is hidden and the indicator is played. |
| onGestureIndicatorFinished | A lambda function to be called when the gesture indicator animation sequence finishes. Implementation of this lambda must reset [gestureIndicatorVisible](#gestureindicatorvisible) to false in order to restore the original `content`. |
| modifier | The [Modifier](/jetpack-compose/androidx.compose.ui/ui/interfaces/Modifier) to be applied to the [OneHandedGestureIndicator](/jetpack-compose/androidx.wear.compose/compose-material3/components/OneHandedGestureIndicator) layout. |
| gestureIndicatorSize | The size constraints for the gesture indicator icon, defaulting to `GestureIndicatorSize.Medium`. |
| gestureIndicatorTint | The color which will be used for a tint of the gesture animation icon. |
| content | The original button content (e.g., Text or Icon) to be displayed when no indicator is active. |

## Code Examples
### OneHandedGestureButtonSample
```kotlin
@Composable
fun OneHandedGestureButtonSample() {
    var label by remember { mutableStateOf("Gesturable Button") }
    val onClick = remember { { label = "Clicked/Gestured" } }
    var gestureIndicatorVisible by remember { mutableStateOf(false) }
    val interactionSource = remember { MutableInteractionSource() }
    Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
        Button(
            onClick = onClick,
            interactionSource = interactionSource,
            modifier =
                Modifier.oneHandedGesture(
                    action = GestureAction.Primary,
                    interactionSource = interactionSource,
                    onShowIndicator = { gestureIndicatorVisible = true },
                    onGesture = onClick,
                ),
        ) {
            OneHandedGestureIndicator(
                gestureIndicatorVisible,
                { gestureIndicatorVisible = false },
            ) {
                Text(label)
            }
        }
    }
}
```
