文章目录
- 前言
- Dialog 普通弹框
- Dialog 普通弹框的使用
- AlertDialog 警告弹框
- AlertDialog 警告弹框的使用
- 总结
前言
在我们传统的UI界面中,经常用到弹框,Compose也有弹框,但是Compose的弹框显示和隐藏和传统的弹框显示(show)和隐藏 (dismiss)不一样,Compose中显示与否要看是否重组被执行,所以它显示与否要依赖状态控制
Dialog 普通弹框
Dialog是最底层的弹框,可以在该组件之上封装
@Composable
fun Dialog(onDismissRequest: () -> Unit, //关闭回调函数properties: DialogProperties = DialogProperties(), //对话框的属性,用于自定义对话框content: @Composable () -> Unit //对话框内容
)
Dialog 普通弹框的使用
@Composable
fun DialogMethod(){val openDialog = remember { mutableStateOf(false) }BaseDialog(dialogState = openDialog)Button(modifier = Modifier.wrapContentSize(),onClick = { openDialog.value = !openDialog.value}) {Text(text = "显示普通dialog")}
}@Composable
fun BaseDialog(dialogState:MutableState<Boolean>){if(dialogState.value){Dialog(onDismissRequest = { dialogState.value = false }) {Box(modifier = Modifier.size(200.dp, 50.dp).background(Color.Red))}}
}
AlertDialog 警告弹框
AlertDialog组件是Dialog组件更高级的封装组件,它定位好了标题,内容文本,按钮位置
@Composable
fun AlertDialog(onDismissRequest: () -> Unit, //关闭回调函数confirmButton: @Composable () -> Unit, //确认按钮modifier: Modifier = Modifier, //修饰符dismissButton: @Composable (() -> Unit)? = null, //取消按钮icon: @Composable (() -> Unit)? = null, //图标title: @Composable (() -> Unit)? = null, //标题text: @Composable (() -> Unit)? = null, //内容shape: Shape = AlertDialogDefaults.shape, //样式containerColor: Color = AlertDialogDefaults.containerColor, //内容颜色iconContentColor: Color = AlertDialogDefaults.iconContentColor, //图标颜色titleContentColor: Color = AlertDialogDefaults.titleContentColor, //标题颜色textContentColor: Color = AlertDialogDefaults.textContentColor, //字体颜色tonalElevation: Dp = AlertDialogDefaults.TonalElevation, //设置阴影properties: DialogProperties = DialogProperties() //对话框的属性,用于自定义对话框
)
AlertDialog 警告弹框的使用
@Composable
fun DialogMethod(){val openAlertDialog = remember { mutableStateOf(false) }AlertDialogSample(dialogState = openAlertDialog)Button(modifier = Modifier.wrapContentSize(),onClick = { openAlertDialog.value = !openAlertDialog.value}) {Text(text = "显示Alertdialog")}
}@Composable
fun AlertDialogSample(dialogState:MutableState<Boolean>){if(dialogState.value){AlertDialog(onDismissRequest = { dialogState.value = false },title = {Text(text = "提示标题")},text = {Text(text = "提示内容")},confirmButton = {TextButton(onClick = { dialogState.value = false }) {Text(text = "确定")}},dismissButton = {TextButton(onClick = { dialogState.value = false }) {Text(text = "取消")}})}
}
总结
-
Dialog是最底层的弹框,可以在该组件之上封装
-
AlertDialog组件是Dialog组件更高级的封装组件,它定位好了标题,内容文本,按钮位置