文档管理中心
您当前浏览的HarmonyOS 5.0.1(API 13)文档归档不再维护,推荐您使用最新版本。详细请参考文档维护策略变更

即时反馈(Toast)

即时反馈(Toast)是一种临时性的消息提示框,用于向用户显示简短的操作反馈或状态信息。​它通常在屏幕的底部或顶部短暂弹出,随后在一段时间后自动消失。即时反馈的主要目的是提供简洁、不打扰的信息反馈,避免干扰用户当前的操作流程。

可以通过使用UIContext中的getPromptAction方法获取当前UI上下文关联的PromptAction对象,再通过该对象调用showToast创建并显示文本提示框。

使用建议

  • 合理使用弹出场景,而不是频繁的提醒用户。

    可以针对以下常用场景使用即时反馈操作,例如,当用户执行某个操作时及时结果反馈,用来提示用户操作是否成功或失败;或是当应用程序的状态发生变化时提供状态更新等。

  • 注意文本的信息密度,即时反馈展示时间有限,应当避免长文本的出现。

    Toast控件的文本应该清晰可读,字体大小和颜色应该与应用程序的主题相符。除此之外,即时反馈控件本身不应该包含任何可交互的元素,如按钮或链接。

  • 杜绝强制占位和密集弹出的提示。

    即时反馈作为应用内的轻量通知,应当避免内容布局占用界面内的其他元素信息,如遮盖弹出框的展示内容,从而迷惑用户弹出的内容是否属于弹出框。再或者频繁性的弹出信息内容,且每次弹出之间无时间间隔,影响用户的正常使用。也不要在短时间内频繁弹出新的即时反馈替代上一个。即时反馈的单次显示时长不要超过 3 秒钟,避免影响用户正常的行为操作。

  • 遵从系统默认弹出位置。

    即时反馈在系统中默认从界面底部弹出,距离底部有一定的安全间距,作为系统性的应用内提示反馈,请遵守系统默认效果,避免与其他弹出类组件内容重叠。特殊场景下可对内容布局进行规避。

即时反馈模式对比

即时反馈提供了两种显示模式,分别为DEFAULT(显示在应用内)、TOP_MOST(显示在应用之上)。

在TOP_MOST类型的Toast显示前,会创建一个全屏大小的子窗(手机上子窗大小和主窗大小一致),然后在该子窗上计算Toast的布局位置,最后显示在该子窗上。具体和DEFAULT模式Toast的差异如下:

展开
差异点 DEFAULT TOP_MOST
是否创建子窗
层级 显示在主窗内,层级和主窗一致,一般比较低 显示在子窗中,一般比主窗层级高,比其他弹窗类组件层级高,比软键盘和权限弹窗层级低。
是否避让软键盘 软键盘抬起时,必定上移软键盘的高度 软键盘抬起时,只有toast被遮挡时,才会避让,且避让后toast底部距离软键盘高度为80vp。
UIExtension内布局 以UIExtension为主窗中布局,对齐方式与UIExtension对齐 以宿主窗口为主窗中布局,对齐方式与宿主窗口对齐。
收起
自动换行
深色代码主题
复制
  1. import {promptAction} from '@kit.ArkUI';
  2. @Entry
  3. @Component
  4. struct Index {
  5. build() {
  6. Column({space: 10}) {
  7. TextInput()
  8. Button() {
  9. Text("DEFAULT类型Toast")
  10. .fontSize(20)
  11. .fontWeight(FontWeight.Bold)
  12. }
  13. .width('100%')
  14. .onClick(()=>{
  15. promptAction.showToast({
  16. message:"ok,我是DEFAULT toast",
  17. duration:2000,
  18. showMode: promptAction.ToastShowMode.DEFAULT,
  19. bottom:80
  20. })
  21. })
  22. Button() {
  23. Text("TOPMOST类型Toast")
  24. .fontSize(20)
  25. .fontWeight(FontWeight.Bold)
  26. }
  27. .width('100%')
  28. .onClick(()=>{
  29. promptAction.showToast({
  30. message:"ok,我是TOP_MOST toast",
  31. duration:2000,
  32. showMode: promptAction.ToastShowMode.TOP_MOST,
  33. bottom:85
  34. })
  35. })
  36. }
  37. }
  38. }

创建即时反馈

适用于短时间内提示框自动消失的场景。

收起
自动换行
深色代码主题
复制
  1. import { LengthMetrics, PromptAction } from '@kit.ArkUI'
  2. import { BusinessError } from '@kit.BasicServicesKit'
  3. @Entry
  4. @Component
  5. struct toastExample {
  6. private uiContext: UIContext = this.getUIContext()
  7. private promptAction: PromptAction = this.uiContext.getPromptAction()
  8. build() {
  9. Column() {
  10. Button('Show toast').fontSize(20)
  11. .onClick(() => {
  12. try {
  13. this.promptAction.showToast({
  14. message: 'Hello World',
  15. duration: 2000
  16. });
  17. } catch (error) {
  18. let message = (error as BusinessError).message
  19. let code = (error as BusinessError).code
  20. console.error(`showToast args error code is ${code}, message is ${message}`);
  21. };
  22. })
  23. }.height('100%').width('100%').justifyContent(FlexAlign.Center)
  24. }
  25. }

在 指南 中进行搜索
请输入您想要搜索的关键词