当前位置: 首页 > news >正文

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— 弹窗组件

简介

弹窗是移动应用中常见的一种用户界面元素,常用于显示一些重要的信息、提示用户进行操作或收集用户输入。ArkTS提供了多种内置的弹窗供开发者使用,除此之外还支持自定义弹窗,来满足各种不同的需求。


下面是所有涉及到的弹窗组件官方文档,请一切以官方文档为准

警告对话弹框 官方文档

操作列表弹框 官方文档

文本滑动选择器弹窗 官方文档

日期滑动选择期弹窗 官方文档

时间滑动选择器弹窗 官方文档

自定义弹窗 官方文档


消息提示

概述

Toast(消息提示),常用于显示一些简短的消息或提示,一般会在短暂停留后自动消失。具体效果如下
在这里插入图片描述

使用说明

可使用@ohos.promptAction模块中的showToast()方法显示Toast提示,使用时需要先导入@ohos.promptAction模块,如下

import promptAction from '@ohos.promptAction'

showToast()方法的参数定义如下

showToast(options: { message: string | Resource,duration?: number,bottom?: string | number})

message
message属性用于设置提示信息

duration
duration属性用于设置提示信息停留时长,单位为毫秒,取值范围是[1500,10000]

bottom
bottom属性用于设置提示信息到底部的距离

示例

import promptAction from '@ohos.promptAction';@Entry
@Component
struct ToastPage {build() {Column() {Button('提示信息').onClick(() => {promptAction.showToast({message: '网络连接已断开',duration: 2000,bottom: 50});})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

警告对话框

概述

AlertDialog(警告对话框)用于向用户发出警告或确认操作的提示,确保用户在敏感操作前进行确认。具体效果如下
在这里插入图片描述
可使用全局方法AlertDialog.show()显示警告对话框,具体用法可参考相关案例或者官方文档。

下面给出一个案例

@Entry
@Component
struct AlertDialogPage {build() {Column() {Button('删除').backgroundColor(Color.Red).onClick(() => {AlertDialog.show({title: '删除该记录?', //弹窗标题message: '删除后无法恢复,您确认要删除吗?', //弹窗信息autoCancel: true, //点击遮障层时,是否关闭弹窗alignment: DialogAlignment.Bottom, //弹窗位置offset: { dx: 0, dy: -20 }, //相对于弹窗位置的偏移量primaryButton: { //主要按钮,位于左侧value: '确认', //按钮内容fontColor: Color.Red, //字体颜色action: () => { //点击回调console.log('确认删除')}},secondaryButton: { //次要按钮,位于右侧value: '取消',action: () => {console.log('取消删除')}},cancel: () => { //点击遮罩层取消时的回调console.info('Closed callbacks')}})})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

操作列表弹框

概述

ActionSheet(操作列表弹窗)用于提供一组选项给用户选择,用户从中选择后,可执行相应的操作。具体效果如下
在这里插入图片描述

使用说明

可使用全局方法ActionSheet.show()显示操作列表弹窗,具体用法可参考相关案例或者官方文档。

下面给出一个案例参考

@Entry
@Component
struct ActionSheetPage {build() {Column() {Button('选择操作').onClick(() => {ActionSheet.show({title: '文件操作', //弹窗标题message: '请选择你要对该文件执行的操作', //弹窗内容autoCancel: true, //点击遮障层时,是否关闭弹窗alignment: DialogAlignment.Bottom, //弹窗位置offset: { dx: 0, dy: -20 }, //弹窗相对alignment位置的偏移量confirm: { //底部按钮value: '取消', //按钮文本内容action: () => { //按钮回调函数console.log('点击按钮取消')}},// cancel: () => { //点击遮障层关闭弹窗时的回调//   console.log('点击遮障层取消')// },sheets: [ //操作选项列表{icon: $r('app.media.icon_copy'), //图标title: '复制', //文本action: () => { //回调console.log('复制文件')}},{icon: $r('app.media.icon_cut'),title: '剪切',action: () => {console.log('剪切文件')}},{icon: $r('app.media.icon_delete'),title: '删除',action: () => {console.log('删除文件')}}]})})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

选择器弹窗

概述

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

TextPickerDialog(文本滑动选择器弹窗)
在这里插入图片描述
给出一个案例

@Entry
@Component
struct TextPickerDialogPage {fruits: string[] = ['苹果', '橘子', '香蕉', '鸭梨', '西瓜']@State selectedIndex: number = 0build() {Column({ space: 50 }) {Text(this.fruits[this.selectedIndex]).fontWeight(FontWeight.Bold).fontSize(30)Button("选择文本").margin(20).onClick(() => {TextPickerDialog.show({range: this.fruits, //设置文本选择器的选择范围selected: this.selectedIndex, //设置选中的索引onAccept: (value: TextPickerResult) => { //确定按钮的回调函数this.selectedIndex = value.index;},onCancel: () => { //取消按钮的回调函数console.info('取消选择')},onChange: (value: TextPickerResult) => { //选择器选中内容发生变化时触发的回调函数console.info(`当前文本:${JSON.stringify(value)}`)}})})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

DatePickerDialog(日期滑动选择期弹窗)
在这里插入图片描述
给出一个案例

@Entry
@Component
struct DatePickerDialogPage {@State date: Date = new Date("2010-1-1");build() {Column({ space: 50 }) {Text(`${this.date.getFullYear()}${this.date.getMonth() + 1}${this.date.getDate()}`).fontWeight(FontWeight.Bold).fontSize(30)Button("选择日期").margin(20).onClick(() => {DatePickerDialog.show({start: new Date("2000-1-1"), //设置选择器的其实日期end: new Date("2100-12-31"), //设置选择器的结束日期selected: this.date, //设置当前选中的日期onAccept: (value: DatePickerResult) => { //确定按钮的回调this.date.setFullYear(value.year, value.month, value.day)},onCancel: () => { //取消按钮的回调console.info('取消选择')},onChange: (value: DatePickerResult) => { //选择器当前内容发生变化时触发的回调函数console.info(`当前日期:${JSON.stringify(value)}`)}})})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

TimePickerDialog(时间滑动选择器弹窗)
在这里插入图片描述
给出一个案例

@Entry
@Component
struct TimePickerDialogPage {@State time: Date = new Date('2020-01-01T00:00:00')build() {Column({ space: 50 }) {Text(`${this.time.getHours()}:${this.time.getMinutes()}`).fontWeight(FontWeight.Bold).fontSize(30)Button("选择时间").margin(20).onClick(() => {TimePickerDialog.show({selected: this.time, //设置当前选中的时间useMilitaryTime: true, //是否使用24小时制onAccept: (value: TimePickerResult) => { //确认按钮的回调this.time.setHours(value.hour, value.minute);},onCancel: () => { //取消按钮的回调console.info('取消选择')},onChange: (value: TimePickerResult) => { //选择器当前内容发生变化时触发的回调函数console.info(`当前时间:${JSON.stringify(value)}`)}})})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

使用说明

具体用法可参考相关案例或者官方文档,各选择器的官方文档地址如下
类型 文档地址

TextPickerDialog(文本滑动选择器弹窗) 官方文档

DatePickerDialog(日期滑动选择期弹窗) 官方文档

TimePickerDialog(时间滑动选择器弹窗) 官方文档


自定义弹窗

概述

当现有组件不满足要求时,可考虑自定义弹窗,自定义弹窗允许开发者自定义弹窗内容和样式。例如
在这里插入图片描述
给出一个示例

@Entry
@Component
struct CustomDialogPage {@State answer: string = '?'controller: CustomDialogController = new CustomDialogController({builder: TextInputDialog({confirm: (value) => {this.answer = value;}}),alignment: DialogAlignment.Bottom,offset: { dx: 0, dy: -30 }})build() {Column({ space: 50 }) {Row() {Text('1+1=').fontWeight(FontWeight.Bold).fontSize(30)Text(this.answer).fontWeight(FontWeight.Bold).fontSize(30)}Button('作答').onClick(() => {this.controller.open();})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}@CustomDialog
struct TextInputDialog {controller: CustomDialogController = new CustomDialogController({ builder: TextInputDialog() })confirm: (value: string) => void;value: string = '';build() {Column({ space: 20 }) {Text('请输入你的答案')TextInput({ placeholder: '请输入数字' }).type(InputType.Number).onChange((value) => {this.value = value;})Row({ space: 50 }) {Button('取消').onClick(() => {this.controller.close();})Button('确认').onClick(() => {this.confirm(this.value);this.controller.close();})}}.padding(20)}
}

使用说明
显示自定义弹窗需要使用CustomDialogController,具体用法可参考相关案例或者官方文档。

相关文章:

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— 弹窗组件

简介 弹窗是移动应用中常见的一种用户界面元素,常用于显示一些重要的信息、提示用户进行操作或收集用户输入。ArkTS提供了多种内置的弹窗供开发者使用,除此之外还支持自定义弹窗,来满足各种不同的需求。 下面是所有涉及到的弹窗组件官方文档…...

【嵌入式学习】Qtday03.21

一、思维导图 二、练习 自由发挥登录窗口的应用场景,实现一个登录窗口界面。(不要使用课堂上的图片和代码,自己发挥,有利于后面项目的完成) 要求: 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件…...

【C语言】C语言运算符优先级详解

文章目录 📝前言🌉运算符优先级简述 🌠逻辑与和逻辑或🌉赋值和逗号运算符 🌠位运算🌉条件表达式🌉位运算与算术运算结合🌉混合使用条件表达式和赋值运算符🌉 逗号运算符的…...

第十节HarmonyOS 常用容器组件3-GridRow

1、描述 栅格容器组件,仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 2、子组件 可以包含GridCol子组件。 3、接口 GridRow(options:{columns: number | GridRowColumnOption, gutter?: Length | GutterOption, Breakpoints?: B…...

SCXI-1193是National Instruments公司生产的吗?

NI SCXI-1193是一款高密度、32通道RF多路复用器开关模块。 NI SCXI-1193 是一款由 National Instruments(NI)公司生产的屏蔽式电缆。这款电缆通常用于连接数据采集设备和传感器或执行器,以实现信号传输和数据采集。SCXI-1193 电缆具有高度灵活…...

使用clion开发tftlcd屏,移植驱动时遇到的问题记录

问题现象 屏幕只有一半屏在刷新 问题出现的情况(在CLION开发时遇到过) 总结...

工程信号的去噪和(分类、回归和时序)预测

🚀【信号去噪及预测论文代码指导】🚀 还为小论文没有思路烦恼么?本人专注于最前沿的信号处理与预测技术——基于信号模态分解的去噪算法和深度学习的信号(回归、时序和分类)预测算法,致力于为您提供最精确、…...

【VUE】前端阿里云OSS断点续传,分片上传

什么是OSS: 数据以对象(Object)的形式存储在OSS的存储空间(Bucket )中。如果要使用OSS存储数据,您需要先创建Bucket,并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后,您…...

春招面试高频题目总结

面试问题 redis 可以用于进程间通信吗? Why?How? ---> 延展一下 有哪些进程间通信技术, 优劣如何? 有大量的插入sql语句,一条条的插入性能很差,如何通过事务进行优化? 保证线程安全的策略有哪些&…...

基于SSM+Jsp+Mysql的KTV点歌系统

基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工…...

Docker Oracle提示密码过期

进入docker docker exec -it oracle bash 修改环境变量文件 vi .bash_profile 为以下内容 # .bash_profile# Get the aliases and functions if [ -f ~/.bashrc ]; then. ~/.bashrc fi# User specific environment and startup programsPATH$PATH:$HOME/binexport PATH expo…...

5.3、【AI技术新纪元:Spring AI解码】图像生成API

Spring 图像生成API Spring图像生成API旨在提供一个简单且便携的接口,用于与各类专注于图像生成的AI模型交互,使开发者能够在不同图像相关模型之间轻松切换,只需对代码进行最少的改动。这一设计遵循了Spring框架的模块化和可互换性理念,确保开发人员能够快速调整其应用程序…...

自营、入驻商城小程序开发

IT外包的隐形重负——沟通成本:当客户仅能提供大致需求,而IT公司则机械地执行,往往会导致项目细节中充满漏洞,用户体验大打折扣。 最终,项目不断延期,进度一拖再拖。探究其根源,客户往往并非IT…...

C++关键字:const

文章目录 一、const的四大作用1.修饰 变量、数组2.修饰 函数的形参、修饰 引用 (最常用)3.修饰 指针:常量指针、指针常量 、只读指针4.修饰 类的成员函数、修饰 类的对象 一、const的四大作用 1.修饰 变量、数组 1.const修饰变量: 被const修…...

nodejs 常用命令

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,常用于服务器端编程。以下是一些 Node.js 的常用命令 1、安装 Node.js: 通常,你会从 Node.js 的官方网站下载并安装适合你操作系统的版本。安装完成后,你可以在命令行中…...

nginx配置详解+nginx_lua模块的使用

nginx基本配置详解 目录 nginx基本配置详解 nginx_lua模块使用方式 openresty介绍与安装 lua基本语法使用 全局配置: user:指定Nginx主进程运行的用户。在下方示例中,Nginx将以root用户身份运行。worker_processes:指定Ngi…...

大数据--hdfs--java编程

环境: virtualbox ubantu1604 Linux idea社区版2023 jdk1.8 hadoop相关依赖 使用java操作 1. 判断/user/stu/input/test.txt文件是否存在,存在则读出文件内容,打印在控制台上。反之,输出“文件不存在”。 package abc;impo…...

力扣由浅至深 每日一题.10 最后一个单词的长度

日子都是崭新的,我们下一章见 ——24.3.21 最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后…...

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…...

对七层代理、四层代理、正向代理、反向代理的认识

一、理解nginx服务代理 Nginx代理有正向和反向代理两种类型,可以基于osi七层模型中的第四层(传输层)和第七层(应用层)进行代理 注: nginx 一般支持的是7层代理,支持四层代理一般使用 lvs 或者ha…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

Qt/C++学习系列之列表使用记录

Qt/C学习系列之列表使用记录 前言列表的初始化界面初始化设置名称获取简单设置 单元格存储总结 前言 列表的使用主要基于QTableWidget控件&#xff0c;同步使用QTableWidgetItem进行单元格的设置&#xff0c;最后可以使用QAxObject进行单元格的数据读出将数据进行存储。接下来…...

Go 并发编程基础:select 多路复用

select 是 Go 并发编程中非常强大的语法结构&#xff0c;它允许程序同时等待多个通道操作的完成&#xff0c;从而实现多路复用机制&#xff0c;是协程调度、超时控制、通道竞争等场景的核心工具。 一、什么是 select select 类似于 switch 语句&#xff0c;但它用于监听多个通…...