IconButton
Functions summary
Unit |
@Composable |
Cmn
|
Unit |
@Composable |
Cmn
|
Functions
IconButton
@Composable
fun IconButton(
onClick: () -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
colors: IconButtonColors = IconButtonDefaults.iconButtonColors(),
interactionSource: MutableInteractionSource? = null,
shape: Shape = IconButtonDefaults.standardShape,
content: @Composable () -> Unit
): Unit
Material Design standard icon button
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.
![]()
content should typically be an Icon (see androidx.compose.material3.internal.Icons). If using a custom icon, note that the typical size for the internal icon is 24 x 24 dp. This icon button has an overall minimum touch target size of 48 x 48dp, to meet accessibility guidelines.
Simple Usage
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.outlined.Lock import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Text import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults import androidx.compose.material3.rememberTooltipState import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.LiveRegionMode import androidx.compose.ui.semantics.liveRegion import androidx.compose.ui.semantics.paneTitle import androidx.compose.ui.semantics.semantics val description = "Localized description" // Icon button should have a tooltip associated with it for a11y. TooltipBox( positionProvider = TooltipDefaults.rememberTooltipPositionProvider(TooltipAnchorPosition.Above), tooltip = { PlainTooltip( modifier = Modifier.semantics { // TODO(b/496338253): Remove this modifier once bug where tooltip text is // not announced by a11y screen readers is resolved. liveRegion = LiveRegionMode.Assertive paneTitle = description } ) { Text(description) } }, state = rememberTooltipState(), ) { IconButton(onClick = { /* doSomething() */ }) { Icon(Icons.Filled.Lock, contentDescription = description) } }
IconButton with a color tint
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.outlined.Lock import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Text import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults import androidx.compose.material3.rememberTooltipState import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.semantics.LiveRegionMode import androidx.compose.ui.semantics.liveRegion import androidx.compose.ui.semantics.paneTitle import androidx.compose.ui.semantics.semantics val description = "Localized description" // Icon button should have a tooltip associated with it for a11y. TooltipBox( positionProvider = TooltipDefaults.rememberTooltipPositionProvider(TooltipAnchorPosition.Above), tooltip = { PlainTooltip( modifier = Modifier.semantics { // TODO(b/496338253): Remove this modifier once bug where tooltip text is // not announced by a11y screen readers is resolved. liveRegion = LiveRegionMode.Assertive paneTitle = description } ) { Text(description) } }, state = rememberTooltipState(), ) { IconButton(onClick = { /* doSomething() */ }) { Icon( rememberVectorPainter(image = Icons.Filled.Lock), contentDescription = description, tint = Color.Red, ) } }
Small-sized narrow round shape IconButton
import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.outlined.Lock import androidx.compose.material3.FilledIconButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Text import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults import androidx.compose.material3.minimumInteractiveComponentSize import androidx.compose.material3.rememberTooltipState import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.LiveRegionMode import androidx.compose.ui.semantics.liveRegion import androidx.compose.ui.semantics.paneTitle import androidx.compose.ui.semantics.semantics val description = "Localized description" // Icon button should have a tooltip associated with it for a11y. TooltipBox( positionProvider = TooltipDefaults.rememberTooltipPositionProvider(TooltipAnchorPosition.Above), tooltip = { PlainTooltip( modifier = Modifier.semantics { // TODO(b/496338253): Remove this modifier once bug where tooltip text is // not announced by a11y screen readers is resolved. liveRegion = LiveRegionMode.Assertive paneTitle = description } ) { Text(description) } }, state = rememberTooltipState(), ) { // Small narrow round icon button FilledIconButton( onClick = { /* doSomething() */ }, modifier = Modifier.minimumInteractiveComponentSize() .size( IconButtonDefaults.extraSmallContainerSize( IconButtonDefaults.IconButtonWidthOption.Narrow ) ), shape = IconButtonDefaults.extraSmallSquareShape, ) { Icon( Icons.Filled.Lock, contentDescription = description, modifier = Modifier.size(IconButtonDefaults.extraSmallIconSize), ) } }
Medium / default size round-shaped icon button
import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.outlined.Lock import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Text import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults import androidx.compose.material3.rememberTooltipState import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.LiveRegionMode import androidx.compose.ui.semantics.liveRegion import androidx.compose.ui.semantics.paneTitle import androidx.compose.ui.semantics.semantics val description = "Localized description" // Icon button should have a tooltip associated with it for a11y. TooltipBox( positionProvider = TooltipDefaults.rememberTooltipPositionProvider(TooltipAnchorPosition.Above), tooltip = { PlainTooltip( modifier = Modifier.semantics { // TODO(b/496338253): Remove this modifier once bug where tooltip text is // not announced by a11y screen readers is resolved. liveRegion = LiveRegionMode.Assertive paneTitle = description } ) { Text(description) } }, state = rememberTooltipState(), ) { IconButton( onClick = { /* doSomething() */ }, modifier = Modifier.size( IconButtonDefaults.mediumContainerSize( IconButtonDefaults.IconButtonWidthOption.Wide ) ), shape = IconButtonDefaults.mediumRoundShape, ) { Icon( Icons.Filled.Lock, contentDescription = description, modifier = Modifier.size(IconButtonDefaults.mediumIconSize), ) } }
| Parameters | |
|---|---|
onClick: () -> Unit |
called when this icon button is clicked |
modifier: Modifier = Modifier |
the |
enabled: Boolean = true |
controls the enabled state of this icon button. When |
colors: IconButtonColors = IconButtonDefaults.iconButtonColors() |
|
interactionSource: MutableInteractionSource? = null |
an optional hoisted |
shape: Shape = IconButtonDefaults.standardShape |
the |
content: @Composable () -> Unit |
the content of this icon button, typically an |
IconButton
@Composable
fun IconButton(
onClick: () -> Unit,
shapes: IconButtonShapes,
modifier: Modifier = Modifier,
enabled: Boolean = true,
colors: IconButtonColors = IconButtonDefaults.iconButtonColors(),
interactionSource: MutableInteractionSource? = null,
content: @Composable () -> Unit
): Unit
Material Design standard icon button
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.
![]()
content should typically be an Icon (see androidx.compose.material3.internal.Icons). If using a custom icon, note that the typical size for the internal icon is 24 x 24 dp. This icon button has an overall minimum touch target size of 48 x 48dp, to meet accessibility guidelines.
Simple Usage
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.outlined.Lock import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Text import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults import androidx.compose.material3.rememberTooltipState import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.LiveRegionMode import androidx.compose.ui.semantics.liveRegion import androidx.compose.ui.semantics.paneTitle import androidx.compose.ui.semantics.semantics val description = "Localized description" // Icon button should have a tooltip associated with it for a11y. TooltipBox( positionProvider = TooltipDefaults.rememberTooltipPositionProvider(TooltipAnchorPosition.Above), tooltip = { PlainTooltip( modifier = Modifier.semantics { // TODO(b/496338253): Remove this modifier once bug where tooltip text is // not announced by a11y screen readers is resolved. liveRegion = LiveRegionMode.Assertive paneTitle = description } ) { Text(description) } }, state = rememberTooltipState(), ) { IconButton(onClick = { /* doSomething() */ }, shapes = IconButtonDefaults.shapes()) { Icon(Icons.Filled.Lock, contentDescription = description) } }
| Parameters | |
|---|---|
onClick: () -> Unit |
called when this icon button is clicked |
shapes: IconButtonShapes |
the |
modifier: Modifier = Modifier |
the |
enabled: Boolean = true |
controls the enabled state of this icon button. When |
colors: IconButtonColors = IconButtonDefaults.iconButtonColors() |
|
interactionSource: MutableInteractionSource? = null |
an optional hoisted |
content: @Composable () -> Unit |
the content of this icon button, typically an |