$alert - 原生对话框

  • 更新时间:2025-12-13 11:58:47

矩形对话框

目前我们的对话框有三种:$tip($提示)、$dialog($对话框)、$alert($提示框),这三种有哪些特点?

  • $tip($提示):阻塞式对话框,很适合流程脚本,当对话框关闭后,下面的代码才会接着运行
  • $dialog($对话框):非阻塞式对话框,采用M3的风格,缺点就是由于遵循了M3布局规则导致显示的视图范围有限。
  • $alert($提示框):非阻塞式对话框,采用安卓默认实体风格,弥补$dialog显示视图小的缺点,可以通过maxWH(true)显示较大的视图区域。

创建()

创建一个对话框

  • 返回 : {$alert} 对话框对象

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();

标题(标题)

设置对话框标题

  • 参数 : 标题 {字符串} 对话框标题

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框标题
提示框.标题("标题");

是显示的()

检查对话框是否正在显示

  • 返回 : {布尔值} 对话框是否正在显示

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//是否显示了
日志(提示框.是显示的());//false

内容(内容)

设置对话框消息

  • 参数 : 内容 {字符串} 对话框消息

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置内容
提示框.内容("内容");

可取消(可取消)

设置对话框是否可以取消

  • 参数 : 可取消 {布尔值} 是否可以取消

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置是否可以取消
提示框.可取消();

图标(图标)

设置对话框图标

  • 参数 : 图标 {字符串} 图标资源路径

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框图标
提示框.图标("ag_logo");

视图(视图)

设置对话框视图

  • 参数 : 视图 {视图} 视图

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//解析一个布局
定义 界面 = $界面.解析布局("main.xml");
定义 视图 = 界面.获取视图();//获取视图
//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框视图
提示框.视图(视图);

视图(视图)

设置对话框视图

  • 参数 : 视图 {视图} 视图

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//解析一个布局
定义 界面 = $界面.解析布局("main.xml");
定义 视图 = 界面.找控件("myView");//获取XView组件视图
//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框视图
提示框.视图(视图);

最大高度(是否最大)

设置最高显示

  • 参数 : 是否最大 {布尔值} 是否最宽高显示

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置最高显示,对话框的高度会显示到最大
提示框.最大高度();

最大宽度(是否最大)

设置最宽显示

  • 参数 : 是否最大 {布尔值} 是否最宽显示

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置最宽显示,对话框的宽度会显示到最大
提示框.最大宽度();

最大宽高(是否最大)

设置最大宽高显示

  • 参数 : 是否最大 {xview} 是否最大宽高显示

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置最宽高显示,对话框的宽高会显示到最大
提示框.最大宽高();

按钮1(文本)

设置对话框第一个按钮

  • 参数 : 文本 {字符串} 按钮文本

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置按钮
提示框.按钮1("按钮1");

按钮1(文本, 回调)

设置对话框第一个按钮

回调参数:di:{DialogInterface} 接收到点击的对话框 which:{整数}被点击的按钮位置

  • 参数 : 文本 {字符串} 按钮文本

  • 参数 : 回调 {(di,which)=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置按钮
提示框.按钮1("按钮1",(di,which)=>{
    //点击事件
});

按钮2(文本)

设置对话框第二个按钮

  • 参数 : 文本 {字符串} 按钮文本

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置按钮
提示框.按钮2("按钮2");

按钮2(文本, 回调)

设置对话框第二个按钮

回调参数:di:{DialogInterface} 接收到点击的对话框 which:{整数}被点击的按钮位置

  • 参数 : 文本 {字符串} 按钮文本

  • 参数 : 回调 {(di,which)=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置按钮
提示框.按钮2("按钮2",(di,which)=>{
    //点击事件
});

按钮3(文本)

设置对话框第三个按钮

  • 参数 : 文本 {字符串} 按钮文本

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置按钮
提示框.按钮3("按钮3");

按钮3(文本, 回调)

设置对话框第三个按钮

回调参数:di:{DialogInterface} 接收到点击的对话框 which:{整数}被点击的按钮位置

  • 参数 : 文本 {字符串} 按钮文本

  • 参数 : 回调 {(di,which)=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置按钮
提示框.按钮3("按钮3",(di,which)=>{
    //点击事件
});

选项(选项, 回调)

设置对话框选项

回调参数:di:{DialogInterface} 接收到点击的对话框 which:{整数}被点击的按钮位置

  • 参数 : 选项 {字符串数组[]} 选项数组

  • 参数 : 回调 {(di,which)=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框选项
提示框.选项(["选项1","选项2","选项3"],(di,which)=>{
    //点击事件
});

单选(选项, 选中的下标, 回调)

设置对话框单选选项

回调参数:di:{DialogInterface} 接收到点击的对话框 which:{整数}被点击的按钮位置

  • 参数 : 选项 {字符串数组[]} 选项数组

  • 参数 : 选中的下标 {整数} 选中的选项位置

  • 参数 : 回调 {(di,which)=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框选项
提示框.单选(["选项1","选项2","选项3"],0,(di,which)=>{
    //点击事件
});

多选(选项, 回调)

设置对话框多选选项

回调参数:di:{DialogInterface} 接收到点击的对话框 which:{整数}被点击的按钮位置 isChecked:{布尔值} 是否被选中

  • 参数 : 选项 {字符串数组[]} 选项数组

  • 参数 : 回调 {(di,which,isChecked)=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框选项
提示框.多选(["选项1","选项2","选项3"],(di,which,isChecked)=>{
    //点击事件
});

多选(选项, 选中状态, 回调)

设置对话框多选选项

回调参数:di:{DialogInterface} 接收到点击的对话框 which:{整数}被点击的按钮位置 isChecked:{布尔值} 是否被选中

  • 参数 : 选项 {字符串数组[]} 选项数组

  • 参数 : 选中状态 {boolean[]} 选中的选项数组

  • 参数 : 回调 {(di,which,isChecked)=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//创建一个对话框(注意对象名称不要和全局函数alert相同)
定义 提示框 = $提示框.创建();
//设置对话框选项
提示框.多选(["选项1","选项2","选项3"],[false,false,true],(di,which,isChecked)=>{
    //点击事件
});

显示()

显示对话框

  • 返回 : {AlertDialog} 对话框对象

  • 版本 : 1.7.0

$提示框.创建()
.标题("标题")
.内容("我是信息")
.按钮3("确定",()=>{
    日志("我被点击了");
})
.显示();//显示对话框

显示之前(回调)

对话框显示前回调

需要注意的是:该回调是放在UI线程中执行的

  • 参数 : 回调 {()=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

$提示框.创建()
.标题("标题")
.内容("我是信息")
.按钮3("确定",()=>{
    日志("我被点击了");
})
.显示之前(()=>{
    日志("准备显示对话框啦");
})
.显示();//显示对话框

显示之后(回调)

对话框显示后回调

需要注意的是:该回调是放在UI线程中执行的

  • 参数 : 回调 {()=>{}} 回调函数

  • 返回 : {$alert} 自己

  • 版本 : 1.7.0

//在自定义view中,如果有界面元素需要刷新,那么就最好在alert显示之后再操作
//例如:
定义 界面 = $界面.解析布局("界面.xml");//解析一个视图
定义 提示框 = $提示框.创建();//创建一个对话框
提示框.显示之后(()=>{
    //如果自定义视图中存在需要操作的ui元素,可以放到这里操作
    定义 关闭按钮 = 界面.找控件("关闭按钮");
    关闭按钮.点击事件(()=>{
        提示框.关闭();//关闭对话框
    });
}).视图(界面.获取视图()).显示();//显示自定义视图

监听关闭(回调)

监听对话框关闭

  • 参数 : 回调 {()=>{}} 提示框关闭后回调

  • 版本 : 1.8.0

定义 提示框 = $提示框.创建()
.标题("标题")
.内容("我是信息")
.按钮3("关闭",()=>{
    //这里关闭提示框
    提示框.关闭();
})
.监听关闭(()=>{
    日志("对话框被关闭了");
})
.显示();//显示对话框

关闭()

关闭对话框

  • 版本 : 1.7.0

定义 提示框 = $提示框.创建()
.标题("标题")
.内容("我是信息")
.按钮3("关闭",()=>{
    //这里关闭对话框
    提示框.关闭();
})
.显示();//显示对话框