IconButton
Common
Component in Material 3 Compose
Icon buttons help people take supplementary actions with a single tap. They’re used when a compact button is required, such as in a toolbar or image list.
Last updated:
Installation
dependencies {
implementation("androidx.compose.material3:material3:1.4.0-alpha02")
}
Overloads
@Deprecated(
message = "Use overload with `shape`",
replaceWith =
ReplaceWith(
"IconButton(onClick, modifier, enabled, colors, interactionSource, shape, content)"
),
level = DeprecationLevel.HIDDEN
)
@Composable
fun IconButton(
onClick: () -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
colors: IconButtonColors = IconButtonDefaults.iconButtonLocalContentColors(),
interactionSource: MutableInteractionSource? = null,
content: @Composable () -> Unit
)
Parameters
name | description |
---|---|
onClick | called when this icon button is clicked |
modifier | the [Modifier] to be applied to this icon button |
enabled | controls the enabled state of this icon button. When false , this component will not respond to user input, and it will appear visually disabled and disabled to accessibility services. |
colors | [IconButtonColors] that will be used to resolve the colors used for this icon button in different states. See [IconButtonDefaults.iconButtonColors]. |
interactionSource | an optional hoisted [MutableInteractionSource] for observing and emitting [Interaction]s for this icon button. You can use this to change the icon button's appearance or preview the icon button in different states. Note that if null is provided, interactions will still happen internally. |
content | the content of this icon button, typically an [Icon] |
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable
fun IconButton(
onClick: () -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
colors: IconButtonColors = IconButtonDefaults.iconButtonLocalContentColors(),
interactionSource: MutableInteractionSource? = null,
shape: Shape = IconButtonDefaults.standardShape,
content: @Composable () -> Unit
)
Parameters
name | description |
---|---|
onClick | called when this icon button is clicked |
modifier | the [Modifier] to be applied to this icon button |
enabled | controls the enabled state of this icon button. When false , this component will not respond to user input, and it will appear visually disabled and disabled to accessibility services. |
colors | [IconButtonColors] that will be used to resolve the colors used for this icon button in different states. See [IconButtonDefaults.iconButtonColors] and [IconButtonDefaults.iconButtonLocalContentColors] . |
interactionSource | an optional hoisted [MutableInteractionSource] for observing and emitting [Interaction]s for this icon button. You can use this to change the icon button's appearance or preview the icon button in different states. Note that if null is provided, interactions will still happen internally. |
shape | the [Shape] of this icon button. |
content | the content of this icon button, typically an [Icon] |
Code Examples
IconButtonSample
@Preview
@Composable
fun IconButtonSample() {
IconButton(onClick = { /* doSomething() */ }) {
Icon(Icons.Filled.Lock, contentDescription = "Localized description")
}
}
TintedIconButtonSample
@Preview
@Composable
fun TintedIconButtonSample() {
IconButton(onClick = { /* doSomething() */ }) {
Icon(
rememberVectorPainter(image = Icons.Filled.Lock),
contentDescription = "Localized description",
tint = Color.Red
)
}
}
XSmallNarrowSquareIconButtonsSample
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Preview
@Composable
fun XSmallNarrowSquareIconButtonsSample() {
// Small narrow round icon button
FilledIconButton(
onClick = { /* doSomething() */ },
modifier =
Modifier.minimumInteractiveComponentSize()
.size(
IconButtonDefaults.xSmallContainerSize(
IconButtonDefaults.IconButtonWidthOption.Narrow
)
),
shape = IconButtonDefaults.xSmallSquareShape
) {
Icon(
Icons.Filled.Lock,
contentDescription = "Localized description",
modifier = Modifier.size(IconButtonDefaults.xSmallIconSize)
)
}
}
MediumRoundWideIconButtonSample
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Preview
@Composable
fun MediumRoundWideIconButtonSample() {
IconButton(
onClick = { /* doSomething() */ },
modifier =
Modifier.size(
IconButtonDefaults.mediumContainerSize(
IconButtonDefaults.IconButtonWidthOption.Wide
)
),
shape = IconButtonDefaults.mediumRoundShape
) {
Icon(
Icons.Filled.Lock,
contentDescription = "Localized description",
modifier = Modifier.size(IconButtonDefaults.mediumIconSize)
)
}
}