鸿蒙HarmonyOS开发:多种内置弹窗及自定义弹窗的详细使用指南

news2025/2/22 10:20:36

文章目录

      • 一、消息提示框(showToast)
        • 1、导入模块
        • 2、语法
        • 3、参数
        • 4、示例
        • 5、效果
      • 二、对话框(showDialog)
        • 1、导入模块
        • 2、语法
        • 3、参数
        • 4、示例
        • 5、效果
      • 三、警告弹窗(AlertDialog)
        • 1、语法
        • 2、参数
        • 3、AlertDialogParam对象说明
        • 4、示例
        • 5、效果
      • 四、操作菜单(showActionMenu)
        • 1、导入模块
        • 2、语法
        • 3、参数
        • 4、ActionMenuOptions选项
        • 5、示例
        • 6、效果
      • 五、操作列表弹窗(ActionSheet)
        • 1、语法
        • 2、参数
        • 3、ActionSheetOptions对象说明
        • 4、SheetInfo接口说明
        • 5、示例
        • 6、效果
      • 六、文本滑动选择器弹窗 (TextPickerDialog)
        • 1、语法
        • 2、参数
        • 3、TextPickerDialogOptions对象说明
        • 4、TextPickerResult对象说明
        • 5、示例
        • 6、效果
      • 七、自定义弹窗 (CustomDialog)
        • 1、语法
        • 2、参数
        • 3、CustomDialogController
        • 4、方法
        • 5、创建自定义弹窗
        • 6、示例
        • 7、效果

一、消息提示框(showToast)

Toast(消息提示),常用于显示一些简短的消息或提示,一般会在短暂停留后自动消失。

1、导入模块
import promptAction from '@ohos.promptAction';
2、语法
showToast(options: ShowToastOptions): void
3、参数
名称类型必填说明
messagestring、Resource显示的文本信息。
durationnumber默认值1500ms,取值区间:1500ms-10000ms。
bottomstring、number设置弹窗边框距离屏幕底部的位置。默认值:80vp,设置了Alignment后不生效。
showModeToastShowMode设置弹窗是否显示在应用之上。默认值:ToastShowMode.DEFAULT,默认显示在应用内。
alignment12+Alignment对齐方式。默认值:undefined,默认底部偏上位置。
offset12+Offset在对齐方式上的偏移。默认值:{dx:0, dy:0},默认没有偏移。
4、示例
Button("提示信息")
.onClick(() => {
      promptAction.showToast({
        message: '网络连接已断开!'//弹窗内容
      });
})
5、效果

在这里插入图片描述

二、对话框(showDialog)

1、导入模块
import promptAction from '@ohos.promptAction';
2、语法
showDialog(options: ShowDialogOptions): Promise<ShowDialogSuccessResponse>

3、参数
名称类型必填说明
titlestring、Resource标题文本。
messagestring、Resource显示的文本信息。
buttonsArray对话框中按钮的数组,结构为:{text:‘button’, color: ‘#666666’},支持大于1个按钮。
alignment10+DialogAlignment弹窗在竖直方向上的对齐方式。默认值:DialogAlignment.Default。
offset10+Offset弹窗相对alignment所在位置的偏移量。默认值:{ dx: 0 , dy: 0 }
4、示例
Button("删除")
.onClick(() => {
      promptAction.showDialog({
        title: '删除该记录?',//弹窗标题
        message: '删除后无法恢复,您确认要删除吗?',//弹窗内容
        buttons: [// 按钮的数组
          {
            text: '确认',
            color: '#ff0000'
          },
          {
            text: '取消',
            color: '#0000ff'
          },
        ],
      })
        .then(data => {
          console.info('click button: ' + data.index);
        })
        .catch((err: Error) => {
          console.info('showDialog error: ' + err);
        })
})
5、效果

在这里插入图片描述

三、警告弹窗(AlertDialog)

AlertDialog(警告对话框)用于向用户发出警告或确认操作的提示,确保用户在敏感操作前进行确认。

1、语法
AlertDialog.show(value: AlertDialogParamWithConfirm | AlertDialogParamWithButtons | AlertDialogParamWithOptions)

2、参数
名称类型必填说明
valueAlertDialogParamWithConfirm、AlertDialogParamWithButtons、AlertDialogParamWithOptions10+定义并显示AlertDialog组件。
3、AlertDialogParam对象说明
名称类型必填说明
titleResourceStr弹窗标题。
subtitle10+ResourceStr弹窗副标题。
messageResourceStr弹窗内容。
autoCancelboolean点击遮障层时,是否关闭弹窗,true表示关闭弹窗。false表示不关闭弹窗。默认值:true
cancel() => void点击遮障层关闭dialog时的回调。
alignmentDialogAlignment弹窗在竖直方向上的对齐方式。默认值:DialogAlignment.Default
offsetOffset弹窗相对alignment所在位置的偏移量。默认值:{ dx: 0 , dy: 0 }
gridCountnumber弹窗容器宽度所占用栅格数。默认值:4
confirm{
value: ResourceStr,
fontColor?: ResourceColor,
backgroundColor?: ResourceColor,
action: () => void
}
确认按钮的文本内容、文本色、按钮背景色和点击回调。
4、示例
Button('删除')
  .onClick(() => {
    AlertDialog.show(
      {
        title: '删除该记录?',//弹窗标题
        message: '删除后无法恢复,您确认要删除吗?',//弹窗内容
        autoCancel: true,//点击遮罩层,是否关闭弹窗
        primaryButton: { // 主要按钮,左侧
          value: '确认',
          fontColor:'#ff0000',
          action: () => {
            console.info('Button-clicking callback')
          }
        },
        secondaryButton: { // 次要按钮,右侧
          value: '取消',
          fontColor:'#0000ff',
          action: () => {
            console.info('Button-clicking callback')
          }
        },
        cancel: () => {
          console.info('showDialog cancel');
        }
      }
    )
  })
5、效果

在这里插入图片描述

四、操作菜单(showActionMenu)

showActionMenu(操作菜单弹窗)用于提供一组选项给用户选择,用户从中选择后,可执行相应的操作。

1、导入模块
import promptAction from '@ohos.promptAction';
2、语法
showActionMenu(options: ActionMenuOptions): Promise<ActionMenuSuccessResponse>
3、参数
名称类型必填说明
optionsActionMenuOptions操作菜单选项。
4、ActionMenuOptions选项
名称类型必填说明
titlestring、Resource标题文本。
buttonsArray对话框中按钮的数组,结构为:{text:‘button’, color: ‘#666666’},支持1-6个按钮。按钮数量大于6个时,仅显示前6个按钮,之后的按钮不显示。
showInSubWindow11+boolean某弹框需要显示在主窗口之外时,是否在子窗口显示此弹窗。默认值:false,在子窗口不显示弹窗。
isModal11+boolean弹窗是否为模态窗口,模态窗口有蒙层,非模态窗口无蒙层。默认值:true,此时弹窗有蒙层。
5、示例
Button("操作菜单")
.onClick(() => {
  promptAction.showActionMenu({
    title: '上传图片',
    buttons: [
      {
        text: '拍照',
        color: '#909399'
      },
      {
        text: '从相册选择',
        color: '#E6A23C'
      },
      {
        text: '微信记录',
        color: '#67C23A'
      },
    ]
  })
    .then(data => {
      console.info('click button: ' + data.index);
    })
    .catch((err: Error) => {
      console.info('showActionMenu error: ' + err);
    })

})
6、效果

在这里插入图片描述

五、操作列表弹窗(ActionSheet)

ActionSheet(操作列表弹窗)用于提供一组选项给用户选择,用户从中选择后,可执行相应的操作。

1、语法
ActionSheet.show(value: ActionSheetOptions)
2、参数
名称类型必填说明
valueActionSheetOptions配置列表选择弹窗的参数。
3、ActionSheetOptions对象说明
名称类型必填说明
titleResourceStr弹窗标题。
subtitle10+ResourceStr弹窗副标题。
messageResourceStr弹窗内容。
autoCancelboolean点击遮障层时,是否关闭弹窗,true表示关闭弹窗。false表示不关闭弹窗。默认值:true
cancel() => void点击遮障层关闭dialog时的回调。
alignmentDialogAlignment弹窗在竖直方向上的对齐方式。默认值:DialogAlignment.Bottom
offset{
dx: number
stringResource,
dy: number
confirm{
enabled10+?: boolean,
defaultFocus10+?: boolean,
style10+?: DialogButtonStyle,
value: Resource、string,
action: () => void
}
确认Button的使能状态、默认焦点、按钮风格、文本内容和点击回调。在弹窗获焦且未进行tab键走焦时,该按钮默认响应Enter键。
enabled:点击Button是否响应,true表示Button可以响应,false表示Button不可以响应。
默认值:true
defaultFocus:设置Button是否是默认焦点,true表示Button是默认焦点,false表示Button不是默认焦点。
默认值:false
style:设置Button的风格样式。
默认值:DialogButtonStyle.DEFAULT
value:Button文本内容。
action: Button选中时的回调。
sheetsArray设置选项内容,每个选择项支持设置图片、文本和选中的回调。
4、SheetInfo接口说明
名称类型必填说明
titlestring 、 Resource选项的文本内容。
iconstring 、 Resource选项的图标,默认无图标显示。
action()=>void选项选中的回调。
5、示例
Button("选择操作")
    .onClick(() => {
        ActionSheet.show({
          title: '文件操作',
          message: '请选择你要对该文件执行的操作',
          confirm: {
            value: '取消',
            action: () => {
              console.log('Get Alert Dialog handled')
            }
          },
          cancel: () => {
            console.log('actionSheet canceled')
          },
          sheets: [
            {
              title: '复制',
              icon: $r("app.media.copy"),
              action: () => {
                console.log('apples')
              }
            },
            {
              title: '剪切',
              icon: $r("app.media.shear"),
              action: () => {
                console.log('bananas')
              }
            },
            {
              title: '删除',
              icon: $r("app.media.delete"),
              action: () => {
                console.log('pears')
              }
            }
          ]
        })
    })
6、效果

在这里插入图片描述

六、文本滑动选择器弹窗 (TextPickerDialog)

选择器弹窗用于让用户从一个列表中选择一个具体的值。ArkTS内置了多种选择器弹窗,例如文本选择器、日期选择器、时间选择器等等。

1、语法
TextPickerDialog.show(options: ShowToastOptions): void
2、参数
名称类型必填说明
optionsTextPickerDialogOptions配置文本选择器弹窗的参数。
3、TextPickerDialogOptions对象说明
名称类型必填说明
rangestring[] 、 Resource设置文本选择器的选择范围。
selectednumber设置选中项的索引值。默认值:0
valuestring设置选中项的文本内容。当设置了selected参数时,该参数不生效。如果设置的value值不在range范围内,则默认取range第一个元素。
defaultPickerItemHeightnumber 、 string设置选择器中选项的高度。
onAccept(value: TextPickerResult) => void点击弹窗中的“确定”按钮时触发该回调。
onCancel() => void点击弹窗中的“取消”按钮时触发该回调。
onChange(value: TextPickerResult) => void滑动弹窗中的选择器使当前选中项改变时触发该回调。
4、TextPickerResult对象说明
名称类型说明
valuestring选中项的文本内容。
indexnumber选中项在选择范围数组中的索引值。
5、示例
Text(this.message)
Button("选择文本")
    .onClick(() => {
      TextPickerDialog.show({
        range: ['苹果', '西瓜', '鸭梨', '香蕉', '橙子'],
        selected: this.selected,
        onAccept: (value: TextPickerResult) => {
          this.selected = value.index
          this.message = value.value
        },
        onCancel: () => {
          console.info("TextPickerDialog:onCancel()")
        }
      })
    })
6、效果

在这里插入图片描述

七、自定义弹窗 (CustomDialog)

自定义弹窗(CustomDialog)可用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹窗。

当现有组件不满足要求时,可考虑自定义弹窗,自定义弹窗允许开发者自定义弹窗内容和样式。

1、语法
CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean, alignment?: DialogAlignment, offset?: Offset, customStyle?: boolean, gridCount?: number})
2、参数
名称类型必填说明
builderCustomDialog自定义弹窗内容构造器。
cancel() => void点击遮障层退出时的回调。
autoCancelboolean是否允许点击遮障层退出。默认值:true
alignmentDialogAlignment弹窗在竖直方向上的对齐方式。默认值:DialogAlignment.Default
offsetOffset弹窗相对alignment所在位置的偏移量。
customStyleboolean弹窗容器样式是否自定义。
默认值:false,弹窗容器的宽度根据栅格系统自适应,不跟随子节点;高度自适应子节点,最大为窗口高度的90%;圆角为24vp。
gridCount8+number弹窗宽度占栅格宽度的个数。默认为按照窗口大小自适应
3、CustomDialogController
dialogController : CustomDialogController = new CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean})
4、方法
  • open():显示自定义弹窗内容,允许多次使用,但如果弹框为SubWindow模式,则该弹框不允许再弹出SubWindow弹框。

  • close():关闭显示的自定义弹窗,若已关闭,则不生效。

5、创建自定义弹窗
  • 使用@CustomDialog装饰器装饰自定义弹窗。

  • @CustomDialog装饰器用于装饰自定义弹框,此装饰器内进行自定义内容(也就是弹框内容)。

@CustomDialog
struct CustomDialogExample {
  controller: CustomDialogController
  build() {
    Column() {
      Text('我是内容')
      .fontSize(20)
      .margin({ top: 10, bottom: 10 })
    }
  }
}
  • 创建构造器,与装饰器呼应相连。
dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialogExample({}),
})
  • 点击与onClick事件绑定的组件使弹窗弹出
Button('click me')
    .onClick(() => {
      this.dialogController.open()
    })
6、示例
@Entry
@Component
struct CustomDialog {
  @State answer: string = '?'
  // 创建构造器,与装饰器呼应相连。
  dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialogExample({
      // 确认按钮回调函数
      confirm: (val) => {
        this.onAccept(val)
      },
    })
  })

  // 确认
  onAccept(val: string) {
    this.answer = val
  }

  build() {
    Column({ space: 20 }) {
    Row() {
        Text('1+1=')
        Text(this.answer)
      }

      Button('作答')
        .onClick(() => {
          // 打开自定义弹窗
          this.dialogController.open()
        })

    }
    .width('100%')
    .height('100%')
    .padding(20)
  }
}


// @CustomDialog装饰器用于装饰自定义弹框,此装饰器内进行自定义内容(也就是弹框内容)。
@CustomDialog
struct CustomDialogExample {
  controller: CustomDialogController
  confirm: (val: string) => void
  answer: string = ''

  build() {
    Column({ space: 20 }) {
      Text('请输入你的答案')
        .fontSize(20)
      TextInput({ placeholder: "请输入数字" })
        .type(InputType.Number)
        .onChange((value: string) => {
          this.answer = value
        })
      Row({ space: 40 }) {
        Button('取消')
          .onClick(() => {
            // 关闭弹窗
            this.controller.close()
          })
        Button('确定')
          .onClick(() => {
            // 关闭弹窗
            this.controller.close()
            // 确认按钮回调函数
            this.confirm(this.answer)
          })
      }
    }.padding(20)
  }
}
7、效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1955054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDBC(Java访问数据库)

Java Database Connectivity&#xff1a;Java访问数据库的解决方案 JDBC定义了一套标准接口&#xff0c;即访问数据库的通用API&#xff0c; 不同的数据库厂商根据各自数据库的特点去实现这些接口。 JDBC希望用相同的方式访问不同的数据库&#xff0c;让具体的数据库操作与数…

科普文:科普文:springcloud之-Hystrix服务容错

Hystrix概念 Hystrix 服务容错保护 的概念和说明 这就是大名鼎鼎的&#xff1a;豪猪 豪猪的英文就是&#xff1a;Hystrix&#xff0c;国外一些大牛的程序员在给自己的架构起名字的时候&#xff0c;往往就这么特别。哪天咱们中国人自己也能写出些架构&#xff0c;咱们就按照中…

⚒linux通过shell脚本上传文件至minio中

&#x1f534;大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 之前数据库是备份到了七牛云上了&#xff0c;但是眼看着数据库文件越来越大&#xff0c;七牛云里面的余额越来越少&#xff0c;所以&#xff0c;转移阵地。 家里的nas&…

昇思25天学习打卡营第20天|munger85

GAN图像生成 生成对抗网络中是为了让我们生成的东西向期望的那样&#xff0c;就是为了让生成的东西很像&#xff0c;真的&#xff0c;例如用它来画画。就是描述整个网络的逻辑和目的&#xff0c;它有两部分组成&#xff0c;一个是生成器&#xff0c;一个是辨别器。他希望的是辨…

C++程序编程中的 SetWindowLong 函数的几个常见用途(附源码)

目录 1、API函数SetWindowLong说明 2、修改窗口风格 3、给窗口指定新的窗口消息处理函数,以拦截窗口消息 4、可以给窗口设置关联的UserData数据,方便在窗口内部使用这些数据 5、64位程序中需要使用SetWindowLongPtr 6、最后 C++软件异常排查从入门到精通系列教程(专栏…

Sping项目只能勾选17和21 (已解决) 导致的后续Invalid bound statement (not found):

问题发现 今天创建项目的时候发现 idea初始化spring的时候选择不了Java8 解决方案:替换URL为 https://start.aliyun.com/ 将IDEA页面创建Spring项目&#xff0c;其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。 将https://start.spr…

TortoiseSVN安装使用教程(超详细)

目录 前言1. 下载2. 安装2.1 安装TortoiseSVN&#xff08;看图操作&#xff09;2.2 安装语言包&#xff08;看图操作&#xff09; 3. 使用3.1 版本库浏览器3.2 其他教程 前言 TortoiseSVN&#xff1a;&#xff08;俗称小乌龟&#xff09;Subversion版本控制系统的一个免费开源客…

Pytorch基础:Tensor的view方法(非连续张量也可以使用view)

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中&#xff0c;view是Tensor的一个重要方法&#xff0c;用于返回一个改变了形状&#xff0c;但数据和数据的顺序与原来一致的新张量&#xff0c;但是新张…

夸克Android一面凉经(2024)

夸克Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《夸克Android一面凉经(2024)》。 面试职位: 智能信息-客户端开发工程师-夸克小说 技术一…

20240728 每日AI必读资讯

Google Gemini 聊天机器人更新 可以免费使用Gemini 1.5 Flash 1. 引入Gemini 1.5 Flash模型&#xff1a; • 提供更快和更高质量的响应。 • 提升推理和图像理解能力。 • 上下文窗口扩大到 32Ktokens&#xff0c;允许进行更长的对话和处理更复杂的问题。 • 即将支持通过 Goo…

【你也能从零基础学会网站开发】 SQL结构化查询语言应用基础-- SQL Server数据库开发创建表之FOREIGN KEY外键约束完全详解最详细!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 浅谈FOREIGN K…

故障诊断 | CNN-LSSVM卷积神经网络结合最小二乘支持向量机故障诊断(Matlab)

效果一览 文章概述 故障诊断 | CNN-LSSVM卷积神经网络结合最小二乘支持向量机故障诊断(Matlab) 模型描述 使用CNN进行特征提取: 使用CNN模型对数据进行训练,通常是图像数据。 通过CNN的卷积层和池化层提取图像的特征。 将提取到的特征作为输入,可以是全连接层的输出或者卷…

系统架构师考点--系统架构设计(上)

大家好。今天我来总结一下系统架构设计相关的考点。这块考点是重中之重&#xff0c;每年上午场客观题占20-25分左右&#xff0c;下午案例题也会考到&#xff0c;下午论文也会考到。大家要好好学学这部分内容。 一、软件架构概述 软件架构是指从需求分析到软件设计之间的过渡过…

机器学习 | 分类算法原理——逻辑回归

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的线性可分继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享逻辑回归这一分类算法原理。本章的分类算法原理基于《基于图像大小进行分类》项目&#xff0c;欢迎大家交流学习&#xff01; 目录 一、…

【51CTO-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

vim的使用及退出码(return 0)

linux基础之vim快速入门 linux基础之vim快速入门_基本linux vim-CSDN博客https://blog.csdn.net/ypxcan/article/details/119878137?ops_request_misc&request_id&biz_id102&utm_termvim%E7%BC%96%E8%BE%91%E5%99%A8%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E4%BA%…

达梦数据库激活

SSH登录 192.168.0.148 账号&#xff1a;root 密码&#xff1a;xxx 1.上传 dm.key 文件到安装目录 /bin 目录下 cd /home/dmdba/dmdbms/bin rz -E dm.key2.修改 dm.key 文件权限 chown -R dmdba.dinstall dm.key3.打开数据库工具&#xff0c;新建查询&#xff0c;输入 cd /…

Odoo 17 仪表盘开发指南:打造高效的数据可视化中心

在现代企业管理中,数据驱动的决策至关重要。Odoo 17 提供了强大的平台来构建自定义仪表板, 适用于数据统计、工作台、驾驶舱、数据可视化等场景,以便用户能够一目了然地监控关键指标并做出及时反应。本文将介绍如何在 Odoo 17 中开发一个灵活且高度定制化的仪表盘系统,包括…

CVE-2018-8715

目录 前言影响范围漏洞利用0x04 漏洞修复指纹总结 前言 AppWeb 是一个嵌入式 Web 服务器&#xff0c;基于由 Embedthis Software LLC 开发和维护的开源 GPL 协议。它是用 C/C 编写的&#xff0c;几乎可以在任何现代操作系统上运行。当然&#xff0c;它的作用是为嵌入式设备提供…