Jetpack Compose 之 Dialog

581 阅读1分钟

属性

@Composable
fun Dialog(
    //消失回调
    onDismissRequest: () -> Unit,
    //dialog 消失相关设置
    properties: DialogProperties = DialogProperties(),
    content: @Composable () -> Unit
) 

DialogProperties 包含以下属性

  1. dismissOnClickOutside 为 true 则点击 DropdownMenu 外部会消失
  2. dismissOnBackPress 为ture 点击返回键会 消失
  3. securePolicy 是否可以截图:SecureFlagPolicy.SecureOn 、SecureFlagPolicy.SecureOff、SecureFlagPolicy.Inherit
  4. usePlatformDefaultWidth 是否应该将对话框内容的宽度限制为平台默认值,即小于屏幕宽度
  5. decorFitsSystemWindows 设置为false使用windowwinsets。如果为false,软输入模式将更改为WindowManager.LayoutParams。

案例

var showDialog by remember {
 mutableStateOf(false)
}

Column(horizontalAlignment = Alignment.CenterHorizontally) {
 Button(onClick = {
showDialog = !showDialog
    } ) {
 Text(text = "弹框")
    }
if (showDialog) {
        Dialog(onDismissRequest = {
showDialog = !showDialog
        } , properties = DialogProperties(
            dismissOnBackPress = false,
            dismissOnClickOutside = true,
            securePolicy = SecureFlagPolicy.SecureOn,
        )) {
 Box(
                Modifier
                    .size(50.dp)
                    .clip(RoundedCornerShape(5.dp))
                    .background(Color.White)
            ) {
 Text(
                    text = "我是Dialog",
                    modifier = Modifier.align(Alignment.Center),
                    fontSize = 15.sp,
                    color = Color.Blue
                )
            }
}
}

}