AlertDialog
In Material 3 Compose
@Composable
fun FilledSplitButtonSample() {
var checked by rememberSaveable { mutableStateOf(false) }
SplitButton(
leadingButton = {
SplitButtonDefaults.LeadingButton(onClick = { /* Do Nothing */ }) {
Icon(
Icons.Filled.Edit,
modifier = Modifier.size(SplitButtonDefaults.LeadingIconSize),
contentDescription = "Localized description",
)
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
Text("My Button")
}
},
trailingButton = {
val description = "Toggle Button"
// Icon-only trailing button should have a tooltip 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(),
) {
SplitButtonDefaults.TrailingButton(
checked = checked,
onCheckedChange = { checked = it },
modifier =
Modifier.semantics {
stateDescription = if (checked) "Expanded" else "Collapsed"
contentDescription = description
},
) {
val rotation: Float by
animateFloatAsState(
targetValue = if (checked) 180f else 0f,
label = "Trailing Icon Rotation",
)
Icon(
Icons.Filled.KeyboardArrowDown,
modifier =
Modifier.size(SplitButtonDefaults.TrailingIconSize).graphicsLayer {
this.rotationZ = rotation
},
contentDescription = "Localized description",
)
}
}
},
)
}