对话框 (Dialogs)
源:Dialogs
对话框用于通知用户特定任务,并包含关键信息、决策或涉及多个子任务。

变体对比
- Basic dialog (基础对话框): 中断用户,要求进行简单的确认或选择。
- Full-screen dialog (全屏对话框): 填充整个屏幕,用于包含一系列复杂任务(如创建日程)。
核心属性 (MaterialAlertDialog)
| 元素 | 属性 | 默认值 |
|---|---|---|
| 容器颜色 | app:backgroundTint | ?attr/colorSurfaceContainerHigh |
| 圆角大小 | app:shapeAppearance | ?attr/shapeAppearanceCornerExtraLarge |
| 标题字体 | android:textAppearance | ?attr/textAppearanceHeadlineSmall |
代码实现
1. 基础用法 (MaterialAlertDialogBuilder)
Material 3 提供了 MaterialAlertDialogBuilder,推荐优先使用它而不是原生的 AlertDialog.Builder。
kotlin
MaterialAlertDialogBuilder(context)
.setTitle("确认删除?")
.setMessage("该操作无法撤销,请谨慎操作。")
.setNeutralButton("稍后再说") { dialog, which ->
// 处理中性按钮
}
.setNegativeButton("取消") { dialog, which ->
// 处理取消
}
.setPositiveButton("删除") { dialog, which ->
// 处理确认
}
.show()2. 带列表的对话框
kotlin
val items = arrayOf("选项 1", "选项 2", "选项 3")
MaterialAlertDialogBuilder(context)
.setTitle("请选择一个项目")
.setItems(items) { dialog, which ->
// which 是点击的索引
}
.show()kotlin
val items = arrayOf("WiFi", "蓝牙", "NFC")
val checkedItems = booleanArrayOf(true, false, false)
MaterialAlertDialogBuilder(context)
.setTitle("设置")
.setMultiChoiceItems(items, checkedItems) { dialog, which, isChecked ->
// 更新状态
}
.show()主题化
你可以通过设置 materialAlertDialogTheme 来全局改变对话框的视觉风格。
xml
<style name="Theme.App" parent="Theme.Material3.*">
<!-- 替换为自定义对话框主题 -->
<item name="materialAlertDialogTheme">@style/ThemeOverlay.App.MaterialAlertDialog</item>
</style>
<style name="ThemeOverlay.App.MaterialAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
<item name="colorSurface">@color/my_custom_background</item>
<item name="materialAlertDialogTitleTextStyle">@style/MyTitleStyle</item>
</style>