鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Dialog对话框组件

news/2024/7/21 10:35:00 标签: harmonyos

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Dialog对话框组件

一、操作环境

操作系统:  Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1

二、Dialog对话框组件

对话框的使用场景也很高频,比如 APP 上架应用市场要求 APP 首次启动要有服务协议和隐私权限提示弹框等,ArkUI开发框架提供了两种方式显示一个对话框,一种是使用 @ohos.promptAction 模块里提供的 API 显示,另一种是使用全局对话框 AlertDialog 显示。

  • 使用 @ohos.promptAction 模块里提供的 showDialog

declare namespace prompt {  
  // 显示一个对话框
  function showDialog(options: ShowDialogOptions, callback: AsyncCallback<ShowDialogSuccessResponse>):void;
}

interface ShowDialogOptions {          // 对话框配置
  title?: string;                      // 标题
  message?: string;                    // 内容
  buttons?: [Button, Button?, Button?];// 按钮
}

interface Button {                     // 对话框按钮配置
  text: string;                        // 按钮文字
  color: string;                       // 按钮颜色
}

interface ShowDialogSuccessResponse {  // 成功回调
  index: number;
}
  • options:显示对话框的配置项, ShowDialogOptions 说明如下:

    • title:对话框的标题。
    • message:对话框的内容。
    • buttons:对话框上的按钮,至少配置一个,最多三个。

call:事件回调,并显示对话框的点击下标

import promptAction from '@ohos.promptAction';

@Entry @Component struct ToastTest {

  build() {
    Column({space: 10}) {

      Button("show dialog")
        .onClick(() => {
          promptAction.showDialog({
            title: "对话框标题",
            message: "对话框内容",
            buttons: [
              {
                text: "第一个按钮",
                color: "#aabbcc"
              },
              {
                text: "第二个按钮",
                color: "#bbccaa"
              },
              {
                text: "第三个按钮",
                color: "#ccaabb"
              }
            ]
          }, (error, index) => {
            var msg = error ? JSON.stringify(error) : "index: " + index;
            promptAction.showToast({
              message: msg
            })
          });
        })
    }
    .width('100%')
    .height('100%')
    .padding(10)
  }
}

三、全局对话框 AlertDialog

除了使用 @ohos.promptAction  模块提供的 API 可以显示一个对话框外,还可以使用全局对话框 AlertDialog , AlertDialog 的源码其定义如下:

declare class AlertDialog {
  // 显示一个对话框
  static show(value: AlertDialogParamWithConfirm | AlertDialogParamWithButtons);
}

方法

show:显示一个对话框,参数 value 支持 AlertDialogParamWithConfirm 和 AlertDialogParamWithButtons,它们都继承自 AlertDialogParam , AlertDialogParam 定义如下:

declare interface AlertDialogParam {
  title?: ResourceStr;
  message: ResourceStr;
  autoCancel?: boolean;
  cancel?: () => void;
  alignment?: DialogAlignment;
  offset?: Offset;
  gridCount?: number;
}

属性
  • title:设置对话框的标题。
  • message:设置对话框显示的内容。
  • autoCancel:点击蒙层是否隐藏对话框。
  • cancel:点击蒙层的事件回调。
  • alignment:对话框的对齐方式。
  • offset:对话框相对于 alignment 的偏移量。
  • gridCount:对话框宽度所占用栅格数。

示例
import prompt from '@ohos.prompt';

@Entry @Component struct PromptTest {
  build() {
    Column({ space: 10 }) {

      Button("show dialog")
        .onClick(() => {
          AlertDialog.show({
            title: "对话框标题",
            message: "对话框内容",
            autoCancel: true,                  // 点击蒙层,隐藏对话框
            cancel: () => {                    // 点击蒙层的事件回调
              prompt.showToast({
                message: "点击蒙层消失"
              })
            },
            alignment: DialogAlignment.Bottom, // 设置对话框底部对齐
            offset: { dx: 0, dy: -20},         // 在Y轴方向上的偏移量
            confirm: {
              value: "确定按钮",
              fontColor: "#ff0000",
              backgroundColor: "#ccaabb",
              action: () => {
                prompt.showToast({
                  message: "点击按钮消失"
                })
              }
            }
          });
        })
    }
    .width('100%')
    .height('100%')
    .padding(10)
  }
}

好了就写到这吧!

你有时间常去我家看看我在这里谢谢你啦...

我家地址:亚丁号

最后送大家一首诗:

山高路远坑深,
大军纵横驰奔,

谁敢横刀立马?
惟有点赞加关注大军。


http://www.niftyadmin.cn/n/5288918.html

相关文章

.NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布

作者&#xff1a; Jon Galloway - Principal Program Manager, .NET Community Team Mehul Harry - Product Marketing Manager, .NET, Azure Marketing 排版&#xff1a;Alan Wang .NET Conf 2023 是有史以来规模最大的 .NET 会议&#xff0c;来自全球各地的演讲者进行了 100 …

C++力扣题目232--用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头…

【c++】入门1

c关键字 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污染&#xff…

什么是vue的ssr,如何使用

Vue的SSR&#xff08;服务器端渲染&#xff09;是在服务器端将Vue组件渲染成HTML字符串&#xff0c;并将其发送到客户端&#xff0c;通过此方法可以更好地利用服务器的计算能力&#xff0c;提高首次渲染速度以及对搜索引擎友好。 要使用Vue的SSR&#xff0c;需要进行以下步骤&…

vue中的动态组件和混入

目录 一、动态组件 二、混入 全局混入&#xff1a; 局部混入&#xff1a; 混入规则&#xff1a; 一、动态组件 component标签动态切换组件,使用is属性切换组件 <!-- 使用component动态切换组件 is属性 组件名称 --><component v-bind:is"current"><…

CSS新手入门笔记整理:CSS3其他样式

outline属性 outline属性用来定义表单中文本框的轮廓线样式。 语法 input{outline: width style color;}/*文本框获取焦点时样式*/ input[type"text"]:focus {outline: width style color; } 第1个值指的是轮廓线宽度&#xff08;outline-width&#xff09;&#…

Qt篇——QwtPainter::drawPie绘制扇形

QwtPainter::drawPie(QPainter *painter, const QRectF &rect, int startAngle, int angle); 一、参数含义&#xff1a; painter&#xff1a; 重绘函数中的painter对象 rect&#xff1a; 要绘制扇形的圆的外切矩形。 startAngle: 要绘制的扇形的起始角 …

什么是数据可视化?数据可视化的流程与步骤

前言 数据可视化将大大小小的数据集转化为更容易被人脑理解和处理的视觉效果。可视化在我们的日常生活中非常普遍&#xff0c;但它们通常以众所周知的图表和图形的形式出现。正确的数据可视化以有意义和直观的方式为复杂的数据集提供关键的见解。 数据可视化定义 数据可视化…