【Harmony3.1/4.0】笔记六-对话框

概念

对话框在任何一款应用中,任何一个系统或者平台上使用都非常频繁,这里介绍一下鸿蒙系统中对话框的用法,分别为:普通文本对话框,自定义提示对话框,对话框菜单,警告提示对话框,列表选择对话框,自定义对话框,日期对话框,时间对话框,文本列表对话框……

1.普通文本对话框

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  //文本提示对话框
  build() {
    Scroll(){
      Column() {
        Button("普通文本提示对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
            promptAction.showToast({
              message:this.message,//显示的提示内容
              duration:2000,//显示的时长
              bottom:200,//设置提示对话框距离底部的间距
            })
          })
        }.width("100%")
    }
    }
}

2.自定义提示对话框

//该提示对话框默认为中央显示
        Button("自定义提示对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
            promptAction.showDialog({
              title:"带按钮的提示对话框",
              message:"你好,我是自定义提示对话框",
              //对话框中显示两个按钮时横向显示,三个按钮会垂直显示
              buttons:[{
                text:"按钮一",
                color:"#f00",
              },
                {
                  text:"按钮二",
                  color:"#0f0",
              },
                {
                  text:"按钮三",
                  color:"#00f",
                }
               ]
            })
            //给按钮添加点击事件
              .then(data=>{
                switch (data.index){
                  case 0:
                    console.info("第一个按钮被点击了")
                  break;
                  case 1:
                    console.info("第二个按钮被点击了")
                    break;
                  case 2:
                    console.info("第三个按钮被点击了")
                    break;
                }
              })
          })

3.对话框菜单

Button("对话框菜单").width("60%").height(60).margin(10)
          .onClick(()=>{
            //菜单对话框,最多可添加6个按钮
            promptAction.showActionMenu({
              title:"对话框菜单",
              buttons:[{
                text:"按钮一",
                color:"#0ff",
              },
                {
                  text:"按钮二",
                  color:"#f0f",
                },
                {
                  text:"按钮三",
                  color:"#f30",
                },
                {
                  text:"按钮四",
                  color:"#aaf",
                },
                {
                  text:"按钮五",
                  color:"#777",
                },
                {
                  text:"按钮六",
                  color:"#0f7",
                },]
            }).then(data=>{
              console.info("第"+(data.index+1)+"个按钮被点击了")
            })
          })

4.警告提示对话框

Button("警告提示对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
            AlertDialog.show({
              title:"标题",//设置标题
              message:"内容",//设置内容
              autoCancel:true,//是否允许自动取消
              alignment:DialogAlignment.Bottom,//设置对话框显示的位置
              offset:{dx:0,dy:-20},//在对齐方式的条件下,设置水平和垂直方向的偏移量
              //x轴向右为正,y轴向下为正
              gridCount:3,//通过设置占用的栅格数设置对话框的宽度
              confirm:{//添加确定按钮
                value:"确定",
                action:()=>{
                  console.info("确定按钮被点击了")
                },
                backgroundColor:"#0ff",//添加按钮的背景颜色
                fontColor:"#f0f",//字体颜色
              },
              cancel:()=>{//当对话框被取消的时候触发
                console.info("对话框被取消了")
              }
            })
          })

 //警告提示对话框2
        Button("警告提示对话框2").width("60%").height(60).margin(10)
          .onClick(()=>{
            AlertDialog.show({
              title:"标题",//设置标题
              message:"内容",//设置内容
              autoCancel:true,//是否允许自动取消
              alignment:DialogAlignment.Bottom,//设置对话框显示的位置
              offset:{dx:0,dy:-20},//在对齐方式的条件下,设置水平和垂直方向的偏移量
              //x轴向右为正,y轴向下为正
              gridCount:3,//通过设置占用的栅格数设置对话框的宽度
              primaryButton:{
                value:"取消",
                action:()=>{
                  console.info("取消按钮被点击了")
                },
              },
              secondaryButton:{
                value:"确定",
                action:()=>{
                  console.info("确定按钮被点击了")
                }
              },
              cancel:()=>{//当对话框被取消的时候触发
                console.info("对话框被取消了")
              }
            })
          })

5.列表选择对话框

//列表选择对话框
        Button("列表选择对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
            ActionSheet.show({
              title:"标题",
              message:"内容",
              autoCancel:true,
              alignment:DialogAlignment.Bottom,
              offset:{dx:0,dy:-20},
              sheets:[{
                title:"苹果",
                icon:$r("app.media.icon"),
                action:()=>{
                  console.info("苹果选项被点击了")
                }
              },
                {
                  title:"香蕉",
                  icon:$r("app.media.icon"),
                  action:()=>{
                    console.info("香蕉选项被点击了")
                  }
                },
                {
                  title:"西瓜",
                  icon:$r("app.media.icon"),
                  action:()=>{
                    console.info("西瓜选项被点击了")
                  }
                },],
              confirm:{
                value:"确定",
                action:()=>{
                  console.info("确定按钮被点击了")
                }
              },
              cancel:()=>{
                console.info("对话框被取消了")
              }
            })
          })

6.自定义对话框

import promptAction from '@ohos.promptAction'

//自定义对话框
@CustomDialog
struct Dialog1{
  //自定义对话框控制器
  controller:CustomDialogController
  cancel:()=>void //定义对话框被取消的事件
  confirm:()=>void //定义对话框被确定的事件
  build(){
    Column(){
      Text("标题").width("100%").height(60).backgroundColor("#600f")
        .fontColor(Color.White).fontWeight(FontWeight.Bold).fontSize(26)
        .textAlign(TextAlign.Center).letterSpacing(10)
      Text("我是自定义对话框的内容").width("100%").height(60).margin({left:10})
        .fontSize(24).fontColor(Color.Black)
      Row({space:10}){
        Button("取消").width("40%").backgroundColor(Color.Red)
          .fontColor(Color.White)
          .height(40).type(ButtonType.Normal).borderRadius(10)
          .onClick(()=>{
            this.controller.close()
            this.cancel()
          })
        Button("确定").width("40%").backgroundColor("#00f")
          .fontColor(Color.White)
          .height(40).type(ButtonType.Normal).borderRadius(10)
          .onClick(()=>{
            this.controller.close()
            this.confirm()
          })
      }
    }.width("100%").margin({bottom:10})
  }
}

@Entry
@Component
struct Index {
  //初始化自定义对话框的控制器
  dialogController:CustomDialogController=new CustomDialogController({
    //创建自定义对话框对象
    builder:Dialog1({
      //实现两个未实现的方法
      cancel:this.onCancel,
      confirm:this.onAccept,
    }),
    autoCancel:true,
    alignment:DialogAlignment.Bottom,
  })
  //定义两个方法
  onCancel(){
    console.info("自定义对话框被取消了")
  }
  onAccept(){
    console.info("自定义对话框被确定了")
  }
  //文本提示对话框
  build() {
    Scroll(){
      Column() {
       
        Button("自定义对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
            //通过控制器打开自定义对话框   关闭调用close方法
            this.dialogController.open()
          })
        
      }
      .width('100%')
    }
  }
}

7.日期对话框

//日期对话框
        Button("日期对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
            //创建日期对话框
            DatePickerDialog.show({
              start:new Date("2000-1-1"), //设置开始的日期
              end:new Date("2100-1-1"),//设置结束的日期
              selected:this.currentDate,//设置当前选中的日期为现在的日期
              // lunar:true,//允许月份和天数显示为中文
              onAccept:(value:DatePickerResult)=>{
                //保存当前这一次用户选中的日期,用户下一次打开对话框时,显示上一次选中的日期
                    this.currentDate.setFullYear(value.year,value.month,value.day)
                console.info(JSON.stringify(value))
              },
              onCancel:()=>{
                console.info("日期对话框被取消了")
              },
              onChange:(value:DatePickerResult)=>{
                console.info("用户正在更改日期"+JSON.stringify(value))
              }
            })
          })

8.时间对话框

//时间对话框
        Button("时间对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
            TimePickerDialog.show({
                //设置当前的时间
              selected:this.currentDate,
              useMilitaryTime:true,//是否使用24小时制
              //选中事件
              onAccept:(value:TimePickerResult)=>{
                this.currentDate.setHours(value.hour,value.minute)
                console.info(JSON.stringify(value))
              },
              //取消事件
              onCancel:()=>{
                console.info("时间对话框被取消了")
              },
              //改变事件
              onChange:(value:TimePickerResult)=>{
                console.info(JSON.stringify(value))
              },
            })
          })

9.文本列表对话框

//文本列表对话框
        Button("文本列表对话框").width("60%").height(60).margin(10)
          .onClick(()=>{
              TextPickerDialog.show({
                range:this.texts,//添加数据信息
                selected:2,//默认选中第几项,默认第0项开始
                onAccept:(value:TextPickerResult)=>{
                  promptAction.showToast({message:"下标为:"+value.index+"的"+value.value+"被选中了"})
                },
                onCancel:()=>{
                  promptAction.showToast({message:"对话框取消了"})
                },
                onChange:(value:TextPickerResult)=>{
                  console.info(JSON.stringify(value))
                }
              })
          })

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据链路层(计算机网络,待完善)

0、前言 本文大多数图片都来自于 B站UP主:湖科大教书匠 的教学视频,对高军老师及其团队制作出这么优质的课程表示感谢。文章增加了部分个人理解,内容并不是对视频的静态化翻译。 1、概述 1.1、数据链路层在计算机网络体系中的位置 1.2、对…

第58篇:创建Nios II工程之Hello_World<四>

Q:最后我们在DE2-115开发板上演示运行Hello_World程序。 A:先烧录编译Quartus硬件工程时生成的.sof文件,在FPGA上成功配置Nios II系统;然后在Nios II Eclipse窗口右键点击工程名hello_world,选择Run As-->Nios II …

离线语音模块初步学习——LSYT201B(深圳雷龙发展)

一 、产品简介 首先简单介绍下该离线语音模块,官方给出的介绍是:YT2228 是根据智能语音交互市场需求及思必驰算法的发展方向定义开发的 “芯片算法”人工智能人机语音交互解决方案,具有高性能、低功耗等特点。该芯片通过软硬融合的方法&…

搭建web服务器需要哪些步骤?

首先跟大家简单普及一下什么是web服务器? Web服务器也称为WWW(WORLD WIDE WEB)服务器,一般指网站服务器,是指驻留于因特网上某种类型计算机的程序。WEB服务器主要功能是提供网上信息浏览服务,可以处理浏览器等Web客户端的请求并返…

婴儿洗衣机有必要买吗?四款好评婴儿洗衣机性能大对比

由于宝宝的日常衣物是经常需要换洗的,而且有时候一天好几套衣服,遇上尿湿了、吐奶了,换洗就更勤。每次一点点衣物就放进家庭用的大容积洗衣机清洗,会相对的比较容易耗水耗电。而如果把宝宝的换洗衣物堆积一阵子,汇总了…

重磅!!!监控分布式NVIDIA-GPU状态

简介:Uptime Kuma是一个易于使用的自托管监控工具,它的界面干净简洁,部署和使用都非常方便,用来监控GPU是否在占用,非常美观。 历史攻略: docker应用:搭建uptime-kuma监控站点 win下持续观察…

VSCODE自定义代码片段简述与基础使用

目录 一、 简述二 、 基础使用说明2.1 新建一个代码块工作区间2.2 语法 三、 示例四、 参考链接 一、 简述 VSCode的自定义代码片段功能允许开发者根据自己的需求定义和使用自己的代码片段,从而提高编码效率。 优点: 提高效率: 自定义代码片段能够减少…

08 内核开发-避免冲突和死锁-mutex

08 内核开发-避免冲突和死锁-mutex 课程简介: Linux内核开发入门是一门旨在帮助学习者从最基本的知识开始学习Linux内核开发的入门课程。该课程旨在为对Linux内核开发感兴趣的初学者提供一个扎实的基础,让他们能够理解和参与到Linux内核的开发过程中。 …

JAVA实现easyExcel模版导出

easyExcel文档 模板注意&#xff1a; 用 {} 来表示你要用的变量 &#xff0c;如果本来就有"{“,”}" &#xff0c;特殊字符用"{“,”}"代替{} 代表普通变量{.}代表是list的变量 添加pom依赖 <dependency><groupId>com.alibaba</groupId&g…

记一次数据查询问题

背景: 有一个数据表,适用原始查询就能查到数据 select * from t_easy_barcode where FP01 = panel_jitaix32_2024_04_25_10_29_57 当我把表中数据列重命名之后sql如下: 因此 我先统计了一下数据表中数据有多少,查询发现有 2482872条 因此首先想到的问题是查询一…

【机器学习】特征筛选实例与代码详解

机器学习中的特征筛选 一、特征筛选的重要性与基本概念二、特征筛选的方法与实践1. 基于统计的特征筛选2. 基于模型的特征筛选3. 嵌入式特征筛选 三、总结与展望 在机器学习领域&#xff0c;特征筛选作为预处理步骤&#xff0c;对于提高模型性能、简化模型结构以及增强模型解释…

是时候了解替代FTP传文件的最优传输方案了

目前越来越多的企业在寻找替代FTP传文件的方案&#xff0c;主要原因在于其固有的一些弊端&#xff0c;在现代企业数据传输需求中可能导致安全性、效率和可靠性方面的问题。以下是FTP的一些主要弊端&#xff1a; 1.数据传输不加密&#xff1a;FTP在传输过程中不加密数据&#xf…

Mybatis入门(入门案例,IDEA配置SQL提示,JDBC介绍,lombok介绍)

目录 一、Mybatis入门案例介绍整体步骤创建SpringBoot项目pom依赖准备测试数据新建实体类配置Mybatis数据库连接信息新建接口类,编写SQL代码单元测试 二、IDEA配置SQL提示三、JDBC是什么案例JDBC和Mybatis对比 四、数据库连接池介绍如何实现一个数据库连接池切换数据库连接池 五…

commvault学习(6):备份oracle(包括oracle的安装)

1.环境 CS、MA&#xff1a;一台windows server2012 客户端&#xff1a;2台安装了oracle11g的windows server2008 1.1 windows server2008安装oracle11g &#xff08;1&#xff09;右击安装包内的setup&#xff0c;以管理员方式运行 &#xff08;2&#xff09;取消勾选接收安…

前端学习<四>JavaScript——48-jQuery动画详解

前言 jQuery提供的一组网页中常见的动画效果&#xff0c;这些动画是标准的、有规律的效果&#xff1b;同时还提供给我们了自定义动画的功能。 显示动画 方式一&#xff1a; <span style"background-color:#f8f8f8"><span style"color:#333333"…

Qt 把.exe打包成安装文件形式

目录 1.下载工具 Qt Installer Framework2.将bin文件添加到环境变量3.拷贝startmenu示例-备用4.准备Qt Release打包好的程序5.把Release打包好的程序放到packages\org.qtproject.ifw.example\data文件夹下6.生成安装包7.修改安装包图标8.修改主程序程序安装引导-创建快捷键9.添…

【重磅】刚刚,《学位法》通过!!!2025年1月1日起施行!

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

JetBot手势识别实验

实验简介 本实验目的在JetBot智能小车实现手势识别功能&#xff0c;使用板卡为Jetson Nano。通过小车摄像头&#xff0c;识别五个不同的手势&#xff0c;实现小车的运动及灯光控制。 1.数据采集 连接小车板卡的Jupyterlab环境&#xff0c;运行以下代码块&#xff0c;配置数据…

rust 卸载重新安装 安装

原因&#xff1a;接触区块链时报错 linking with x86_64-w64-mingw32-gcc failed: exit code: 1 Rust编译需要C环境&#xff0c;如果你没有&#xff0c;Rust也能安装成功&#xff0c;只是无法编译代码 C的编译工具有两个&#xff0c;一个是msvc&#xff0c;也就是visual studi…

pytest-xdist:远程多主机 - 分布式运行自动化测试

简介&#xff1a;pytest-xdist插件使用新的测试执行模式扩展了pytest&#xff0c;最常用的是在多个CPU之间分发测试以加快测试执行&#xff0c;即 pytest -n auto同时也是一个非常优秀的分布式测试插件&#xff0c;分别支持ssh和socket两种方式实现master和worker的远程通讯。…