---
title: "ButtonContent"
description: "Lays out the content of a Button with support for an icon, a label, and a secondary label."
type: "component"
lastmod: "2026-07-02T02:32:46.568291Z"
---
## API Reference

### ButtonContent

> Source set: Android

```kotlin
@Composable
public fun ButtonContent(
    modifier: Modifier = Modifier,
    secondaryLabel: (@Composable RowScope.() -> Unit)? = null,
    icon: (@Composable BoxScope.() -> Unit)? = null,
    enabled: Boolean = true,
    colors: ButtonColors = ButtonDefaults.buttonColors(),
    label: @Composable RowScope.() -> Unit,
)
```

#### Parameters

| | |
| --- | --- |
| modifier | Modifier to be applied to the button content layout. |
| secondaryLabel | A slot for providing the button's secondary label. The contents are expected to be text which is "start" aligned if there is an icon present and "start" or "center" aligned if not. label and secondaryLabel contents should be consistently aligned. |
| icon | A slot for providing the button's icon. The contents are expected to be a horizontally and vertically aligned icon of size `ButtonDefaults.IconSize` or `ButtonDefaults.LargeIconSize`. |
| enabled | Controls the enabled state of the button content. When `false`, the content will be displayed in a disabled style. |
| colors | [ButtonColors](/jetpack-compose/androidx.wear.compose/compose-material3/classes/ButtonColors) that will be used to resolve the content, secondary content, and icon colors in different states. See [ButtonDefaults.buttonColors](/jetpack-compose/androidx.wear.compose/compose-material3/objects/ButtonDefaults). |
| label | A slot for providing the button's main label. The contents are expected to be text which is "start" aligned if there is an icon present and "start" or "center" aligned if not. |

## Code Examples
### ButtonContentWithOneHandedGestureSample
```kotlin
@Composable
fun ButtonContentWithOneHandedGestureSample() {
    var label by remember { mutableStateOf("Filled Button") }
    val onClick = remember { { label = "Gestured" } }
    val interactionSource = remember { MutableInteractionSource() }
    Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
        Button(
            onClick = onClick,
            interactionSource = interactionSource,
            modifier =
                Modifier.oneHandedGesture(
                    action = GestureAction.Primary,
                    interactionSource = interactionSource,
                    onGesture = onClick,
                ),
        ) {
            OneHandedGestureIndicator(
                interactionSource = interactionSource,
                gestureIndicatorTint = MaterialTheme.colorScheme.onPrimary,
            ) {
                ButtonContent(
                    secondaryLabel = { Text("Secondary Label") },
                    icon = {
                        Icon(
                            painter = painterResource(R.drawable.ic_favorite_rounded),
                            contentDescription = "Favorite icon",
                            modifier = Modifier.size(ButtonDefaults.IconSize),
                        )
                    },
                    colors = ButtonDefaults.buttonColors(),
                    label = { Text(label) },
                )
            }
        }
    }
}
```
