本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
一、showToast
- 文本提示框
功能:显示短暂的消息提示,自动消失。
核心参数:
message
(必填):提示文本(string | Resource
类型)。duration
:显示时长(默认1500ms,范围1500-10000ms)。bottom
:距离屏幕底部的距离(默认80vp)。alignment
:对齐方式(如Alignment.Center
)。backgroundColor
/textColor
:背景和文字颜色。
示例代码:
import { promptAction } from '@kit.ArkUI';
@Entry
@Component
struct ToastExample {
build() {
Column() {
Button('显示Toast')
.onClick(() => {
promptAction.showToast({
message: '操作成功',
duration: 2000,
bottom: 100,
backgroundColor: '#4CAF50',
textColor: '#FFFFFF'
});
})
}
}
}
注意:不支持在UIAbility生命周期中直接调用,需在组件内使用。
二、showDialog
- 对话框
功能:显示带按钮的对话框,支持同步/异步返回结果。
核心参数:
title
:对话框标题。message
:内容文本。buttons
:按钮数组(最多3个),可设置文本和颜色。
1. 同步返回(Promise)
promptAction.showDialog({
title: '确认删除',
message: '确定删除此文件吗?',
buttons: [
{ text: '取消', color: '#999999' },
{ text: '删除', color: '#FF0000' }
]
}).then(data => {
console.info('点击按钮索引:', data.index); // 0或1
});
2. 异步返回(Callback)
promptAction.showDialog({
title: '提示',
message: '异步对话框示例',
buttons: [{ text: '确定' }]
}, (err, data) => {
if (err) return;
console.info('点击按钮索引:', data.index);
});
适用场景:需用户确认的操作(如删除退出)。
三、showActionMenu
- 操作菜单
功能:显示底部弹出菜单,支持多选项。
核心参数:
title
:菜单标题(可选)。buttons
:菜单项数组,每个项可设置文本和颜色。
示例代码:
promptAction.showActionMenu({
title: '选择操作',
buttons: [
{ text: '拍照', color: '#000000' },
{ text: '从相册选择', color: '#000000' },
{ text: '取消', color: '#FF0000' }
]
}).then(data => {
console.info('选择项索引:', data.index);
});
注意:菜单项超过3个时会自动滚动。
四、openCustomDialog
- 自定义弹窗
功能:完全自定义弹窗内容,支持复杂UI布局。
核心参数:
builder
:使用@Builder
装饰器定义的自定义组件。alignment
:弹窗对齐方式(如DialogAlignment.Center
)。isModal
:是否模态(阻止背景交互)。
示例代码:
@Entry
@Component
struct CustomDialogExample {
@Builder
customDialog() {
Column() {
Text('自定义弹窗').fontSize(20)
Button('关闭').onClick(() => {
promptAction.closeCustomDialog(this.dialogId);
})
}
}
private dialogId: number = 0;
build() {
Column() {
Button('打开自定义弹窗')
.onClick(() => {
promptAction.openCustomDialog({
builder: () => this.customDialog(),
alignment: DialogAlignment.Bottom
}).then(id => this.dialogId = id);
})
}
}
}
适用场景:需个性化设计的弹窗(如登录框广告)。
五、封装工具类(高级用法)
可参考以下设计封装全局弹窗工具类:
- 生成唯一ID:避免弹窗冲突。
- 链式调用:支持动态配置属性(如对齐方式背景模糊)。
- 生命周期回调:监听弹窗显示/隐藏事件。
示例片段:
class PromptUtil {
static showCustomDialog(builder: () => void) {
const dialogId = generateUniqueId();
promptAction.openCustomDialog({ builder })
.then(id => {
// 管理弹窗ID
});
}
}
优势:统一管理弹窗逻辑,提升代码复用性。
六、注意事项
- 上下文限制:不可在UIAbility生命周期中直接调用,需通过组件触发 。
- 错误处理:使用
try-catch
捕获参数错误(如401
错误码)。 - 版本兼容:部分API从特定版本开始支持(如
showActionMenu
需API 10+)。