按钮 (Button)
M3 提供了 5 种基本类型的按钮,以及悬浮按钮 (FAB) 和图标按钮 (IconButton)。
1. 常规按钮
所有按钮都遵循相同的 API 结构:onClick 回调和 content 内容。
kotlin
// 高强调:主要操作
Button(onClick = { /* ... */ }) {
Icon(Icons.Default.Add, null)
Spacer(Modifier.width(8.dp)) // 图标和文字间距
Text("添加项目")
}kotlin
// 中强调:次要操作
FilledTonalButton(onClick = { /* ... */ }) {
Text("确认")
}kotlin
// 低强调:带边框
OutlinedButton(onClick = { /* ... */ }) {
Text("取消")
}kotlin
// 带阴影的按钮
ElevatedButton(onClick = { /* ... */ }) {
Text("Elevated")
}kotlin
// 最低强调:通常用于 Dialog 或卡片内
TextButton(onClick = { /* ... */ }) {
Text("了解更多")
}2. 交互状态
您可以通过 enabled 参数禁用按钮,也可以通过 colors 自定义不同状态下的颜色。
kotlin
Button(
onClick = { },
enabled = false, // 禁用状态
colors = ButtonDefaults.buttonColors(
containerColor = Color.Blue,
contentColor = Color.White,
disabledContainerColor = Color.Gray,
disabledContentColor = Color.DarkGray
),
shape = RoundedCornerShape(8.dp) // 自定义形状
) {
Text("自定义样式")
}3. 图标按钮 (IconButton)
用于仅显示图标的操作。
kotlin
IconButton(onClick = { /* ... */ }) {
Icon(Icons.Filled.Favorite, contentDescription = "收藏")
}
// M3 新增:带背景的图标按钮
FilledIconButton(onClick = { /* ... */ }) {
Icon(Icons.Filled.Lock, contentDescription = "锁定")
}4. 悬浮按钮 (FAB)
通常用于屏幕上的主要操作,常与 Scaffold 配合使用。
kotlin
FloatingActionButton(
onClick = { },
containerColor = MaterialTheme.colorScheme.secondaryContainer,
contentColor = MaterialTheme.colorScheme.onSecondaryContainer
) {
Icon(Icons.Filled.Add, "Add")
}kotlin
// 扩展 FAB:带文字和图标
ExtendedFloatingActionButton(
onClick = { },
icon = { Icon(Icons.Filled.Edit, "Edit") },
text = { Text("Compose") },
)