对话框在任何一款应用中,任何一个系统或者平台上使用都非常频繁,这里介绍一下鸿蒙系统中对话框的用法,分别为:普通文本对话框,自定义提示对话框,对话框菜单,警告提示对话框,列表选择对话框,自定义对话框,日期对话框,时间对话框,文本列表对话框……
- @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%")
- }
- }
- }
- //该提示对话框默认为中央显示
- 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;
- }
- })
- })
- 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)+"个按钮被点击了")
- })
- })
- 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("对话框被取消了")
- }
- })
- })
- //列表选择对话框
- 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("对话框被取消了")
- }
- })
- })
- 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%')
- }
- }
- }
- //日期对话框
- 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))
- }
- })
- })
- //时间对话框
- 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))
- },
- })
- })
- //文本列表对话框
- 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))
- }
- })
- })