HarmonyOS鸿蒙Next中在开发欢迎页面,弹出alertdialog,但是,点击空白的地方,alertdialog自动消失?

HarmonyOS鸿蒙Next中在开发欢迎页面,弹出alertdialog,但是,点击空白的地方,alertdialog自动消失? 在开发欢迎页面,弹出alertdialog,但是,点击空白的地方,alertdialog自动消失?怎么设置alertdialog为独占式,像Android中即使单击空白,对话框也不会消失。

6 回复

autoCancel属性:

点击遮障层时,是否关闭弹窗,true表示关闭弹窗。false表示不关闭弹窗。

默认值:true

代码示例:

@Entry
@Component
struct AlertDialogExample {
  build() {
    Column({ space: 5 }) {
      Button('one button dialog')
        .onClick(() => {
          this.getUIContext().showAlertDialog(
            {
              title: 'title',
              message: 'text',
              autoCancel: false,
              alignment: DialogAlignment.Bottom,
              offset: { dx: 0, dy: -20 },
              gridCount: 3,
              confirm: {
                value: 'button',
                action: () => {
                  console.info('Button-clicking callback');
                }
              },
              cancel: () => {
                console.info('Closed callbacks');
              },
              onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
                console.info(`reason= ${dismissDialogAction.reason}`);
                console.info('AlertDialog onWillDismiss');
                if (dismissDialogAction.reason === DismissReason.PRESS_BACK) {
                  dismissDialogAction.dismiss();
                }
                if (dismissDialogAction.reason === DismissReason.TOUCH_OUTSIDE) {
                  dismissDialogAction.dismiss();
                }
              }
            }
          )
        })
        .backgroundColor(0x317aff)
    }.width('100%').margin({ top: 5 })
  }
}

更多关于HarmonyOS鸿蒙Next中在开发欢迎页面,弹出alertdialog,但是,点击空白的地方,alertdialog自动消失?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


麻烦在使用api的时候把文档看完~

文档是第一手资料,可信度100%。当然如果发现文档错了可以及时反馈。

API地址:警告弹窗 (AlertDialog)-AlertDialogParam对象说明

设置AlertDialog的autoCancel属性为false,点击空白的地方不自动关闭弹窗。

在HarmonyOS Next中,AlertDialog默认点击外部区域会自动关闭。这是系统预设的交互行为。

在HarmonyOS Next中,AlertDialog默认是模态对话框,但点击外部区域会消失,这符合其设计规范。要实现独占式(阻塞式)效果,防止点击外部关闭,你需要设置setCanceledOnTouchOutside(false)

具体代码示例如下:

AlertDialog.Builder builder = new AlertDialog.Builder(context);
// 设置对话框内容
builder.setTitle("提示")
       .setMessage("这是一个独占式对话框")
       .setPositiveButton("确定", null);
       
AlertDialog dialog = builder.create();
// 关键设置:禁止点击外部关闭
dialog.setCanceledOnTouchOutside(false);
// 可选:禁止按返回键关闭
// dialog.setCancelable(false);
dialog.show();

注意:

  • setCanceledOnTouchOutside(false) 会阻止点击对话框外部区域关闭。
  • 如果需要同时禁用返回键关闭,可额外调用 setCancelable(false)
  • 这种模式会中断用户操作流,建议谨慎使用,仅用于必须确认的关键操作。

如果你的对话框仍然异常关闭,请检查是否在show()前正确设置了上述属性,或是否存在其他逻辑干扰。

回到顶部