【鸿蒙 HarmonyOS NEXT】popup弹窗

news2024/11/13 12:36:38

一、背景

给组件绑定popup弹窗,并设置弹窗内容,交互逻辑和显示状态。

常见场景:点击按钮弹出popup弹窗,并对弹窗的内容进行交互逻辑处理,如:弹窗内点击跳转到其他页面

二、给组件绑定Popup弹窗

PopupOptions类型说明

名称类型必填描述
messagestring

弹窗信息内容。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

placementOnTop(deprecated)boolean

是否在组件上方显示,默认值为false。

说明:

从 API version 10 开始废弃,建议使用placement替代。

primaryButton

{

value: string,

action: () => void

}

第一个按钮。

value: 弹窗里主按钮的文本。

action: 点击主按钮的回调函数。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

secondaryButton

{

value: string,

action: () => void

}

第二个按钮。

value: 弹窗里辅助按钮的文本。

action: 点击辅助按钮的回调函数。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

onStateChange(event: { isVisible: boolean }) => void

弹窗状态变化事件回调,参数isVisible为弹窗当前的显示状态。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

arrowOffset9+Length

popup箭头在弹窗处的偏移。箭头在气泡上下方时,数值为0表示箭头居最左侧,偏移量为箭头至最左侧的距离,默认居中。箭头在气泡左右侧时,偏移量为箭头至最上侧的距离,默认居中。如果显示在屏幕边缘,气泡会自动左右偏移,数值为0时箭头始终指向绑定组件。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

showInSubWindow9+boolean

是否在子窗口显示气泡,默认值为false。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

mask10+boolean | { color : ResourceColor }

设置气泡是否有遮罩层及遮罩颜色。如果设置为false,则没有遮罩层;如果设置为true,则设置有遮罩层并且颜色为透明色;如果设置为Color,则为遮罩层的颜色。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

messageOptions10+PopupMessageOptions

设置弹窗信息文本参数。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

targetSpace10+Length

设置popup与目标的间隙。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

placement10+Placement

设置popup组件相对于目标的显示位置,默认值为Placement.Bottom。

如果同时设置了placementOnTop和placement,则以placement的设置生效。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

offset10+Position

设置popup组件相对于placement设置的显示位置的偏移。

说明:

不支持设置百分比。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

enableArrow10+boolean

设置是否显示箭头。

默认值:true

说明:

当页面可用空间无法让气泡完全避让时,气泡会覆盖到组件上并且不显示箭头。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

popupColor11+Color | string | number | Resource

提示气泡的颜色。如需去除模糊背景填充效果,需将backgroundBlurStyle设置为BlurStyle.NONE。

默认值:透明色TRANSPARENT加模糊背景填充效果COMPONENT_ULTRA_THICK。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

autoCancel11+boolean

页面有操作时,是否自动关闭气泡。

默认值:true

元服务API: 从API version 12开始,该接口支持在元服务中使用。

width11+Dimension

弹窗宽度。

说明:

showInSubWindow=true时最大高度为设备屏幕高度,showInSubWindow=false时最大高度为应用窗口高度。高度限定逻辑=最大高度-状态栏高度(没有时高度为0)-dock栏高度(没有时高度为0)-40VP-40VP。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

arrowPointPosition11+ArrowPointPosition

气泡尖角相对于父组件显示位置,气泡尖角在垂直和水平方向上有 ”Start“、”Center“、”End“三个位置点可选。以上所有位置点均位于父组件区域的范围内,不会超出父组件的边界范围。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

arrowWidth11+Dimension

设置箭头宽度。若所设置的箭头宽度超过所在边的长度减去两倍的气泡圆角大小,则不绘制气泡箭头。

默认值:16.0_vp

说明:

不支持设置百分比。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

arrowHeight11+Dimension

设置箭头高度。

默认值:8.0_vp

说明:

不支持设置百分比。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

radius11+Dimension

设置气泡圆角半径。

默认值:20.0_vp

元服务API: 从API version 12开始,该接口支持在元服务中使用。

shadow11+ShadowOptions | ShadowStyle

设置气泡阴影。

默认值:ShadowStyle.OUTER_DEFAULT_MD

元服务API: 从API version 12开始,该接口支持在元服务中使用。

backgroundBlurStyle11+BlurStyle

设置气泡模糊背景参数。

默认值:BlurStyle.COMPONENT_ULTRA_THICK

元服务API: 从API version 12开始,该接口支持在元服务中使用。

transition12+TransitionEffect

自定义设置popup弹窗显示和退出的动画效果。

说明:

1.如果不设置,则使用默认的显示/退出动效。

2.显示动效中按back键,打断显示动效,执行退出动效,动画效果为显示动效与退出动效的曲线叠加后的效果。

3.退出动效中按back键,不会打断退出动效,退出动效继续执行,back键不被响应。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

onWillDismiss12+boolean|(dismissPopupAction: DismissPopupAction) => void

设置popup交互式关闭拦截开关及拦截回调函数,默认值为true,popup响应点击、左滑/右滑、三键back。

1.当为boolean类型时,如果设置为false,则不响应点击、左滑/右滑、三键back或键盘ESC退出事件,仅当设置“弹窗显示状态”参数show值为false时才退出;如果设置为true,则正常响应退出事件;

2.如果设置为函数类型,则拦截退出事件且执行回调函数。

说明:

在onWillDismiss回调中,不能再做onWillDismiss拦截。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

三、具体实现

代码:

@Extend(Text)
function PopupTextStyle() {
  .fontSize(14)
  .fontColor('#222427')
  .lineHeight(16)
}
@Entry
@Component
struct PopupExample {
  @State customPopup: boolean = false; //定义变量控制弹窗显示
  controller: TabsController = new TabsController()

  build() {
    Column(){
      Image($r('app.media.navImg')).width(100)
        .onClick(()=>{
          this.customPopup = !this.customPopup;
        })
        .bindPopup(this.customPopup, {
          builder: this.popupBuilder,
          placement: Placement.Bottom,
          mask: { color: '#80000000' },
          popupColor: Color.White,
          enableArrow: true, //是否显示箭头
          arrowPointPosition: ArrowPointPosition.CENTER, //气泡尖角位置
          arrowWidth: 13, //箭头宽度
          arrowHeight: 10, //箭头高度
          radius: 4,
          offset: {x:-5, y: -8 },
          onStateChange: (e) => {
            if (!e.isVisible) {
              this.customPopup = false;
            }
          }
        })
    }
    .layoutWeight(1)
    .width('100%')
    .backgroundColor('#f0f2f4')
    }

  //popup构造器定义弹框内容
  @Builder
  popupBuilder() {
    Column({ space: 16 }) {
      Text('首页')
        .PopupTextStyle()
        .onClick(()=>{
          console.log('lucy== 11')
        })
      Text('购物车')
        .PopupTextStyle()
        .onClick(()=>{
          console.log('lucy== 22')
        })
      Text('分类')
        .PopupTextStyle()
        .onClick(()=>{
          console.log('lucy== 33')
        })
    }
    .alignItems(HorizontalAlign.Start)
    .width(74)
    .padding({ top: 16, bottom: 16, left: 16 })
  }
}

效果:

点击图片出现弹窗,弹窗内点击内容进行交互处理

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

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

相关文章

【重学 MySQL】三十四、加密与解密函数

【重学 MySQL】三十四、加密与解密函数 在 MySQL 中,加密与解密函数是保护数据安全的重要手段,它们允许开发者在存储和传输敏感数据时保持数据的保密性。 函数名描述返回值类型备注AES_ENCRYPT(str, key_str)使用 AES 算法加密字符串BLOB返回加密后的二…

Quartz框架介绍

一、何为Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组…

【每日刷题】Day125

【每日刷题】Day125 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 17. 电话号码的字母组合 - 力扣(LeetCode) 2. LCR 080. 组合 - 力扣&#…

数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)

注: 资料都是基于网上一些博客分享和自己学习整理而成的 Verilog 1. 数据类型 Verilog一共有19种数据类型 基础四种数据类型:reg型,wire型,integer型,parameter型 reg型   reg类型是寄存器数据类型的关键字。寄存…

VBS学习1 - 语法、内置函数、内置对象

文章目录 概述执行脚本语法转义字符文本弹框msgbx定义变量dim(普通类型)定义接收对象set字符拼接&用户自定义输入框inputbox以及输入判断ifelse数组(参数表最大索引,非数组容量)有容量无元素基于元素确定容量 循环…

解密.bixi、.baxia勒索病毒:如何安全恢复被加密数据

导言 在数字化时代,数据安全已成为个人和企业面临的重大挑战之一。随着网络攻击手段的不断演进,勒索病毒的出现尤为引人关注。其中,.bixi、.baxia勒索病毒是一种新型的恶意软件,它通过加密用户的重要文件,迫使受害者支…

Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ

文本目录: ❄️一、优先级队列: ➷ 1、概念: ❄️二、优先级队列的模拟实现: ➷ 1、堆的概念: ➷ 2、堆的性质: ➷ 3、堆的创建: ▶ 向下调整: ➷ 4、堆的插入和删除: …

Java 值传递与引用传递

以下是包含引用的完整博客文章,以markdown格式输出,附带“Java 只有值传递”的相关参考来源。 Java 是一种广泛使用的面向对象编程语言,但对于值传递(pass by value)和引用传递(pass by reference&#xff…

只有公网IP地址可以申请SSL证书吗?

是的,只有公网IP地址可以申请SSL证书。这是因为SSL证书主要用于加密互联网上的数据传输,确保通信的安全性和数据的完整性。而公网IP地址是互联网通信的核心,具有全球唯一性,允许互联网上的用户通过它们访问互联网上的资源。 具体…

北森笔试测评之言语理解到底难不难

前篇笔记我提到过,言语理解是最难的,有同学质疑了。言语我都会做呀,甚至有的可以搜到,而图标和图形我有的不会。这里需要指出,会做不等于作对,可以回顾到高中甚至初中的时候,感觉做的好的一般都…

dcmtk的自动输入数据纠错模式对DICOMDIR读取的影响

软件版本 dcmtk 3.6.7 自动纠错的全局变量 输入数据的自动纠错是一个全局变量,定义在dcmtk/dcmdata/dcobject.h中,如下所示: /** This flags defines whether automatic correction should be applied to input* data (e.g.\ stripping …

【多视图学习】基于多视图信息瓶颈的鲁棒表示学习

论文链接 代码链接 0.论文摘要和信息 摘要 信息瓶颈原理为表示学习提供了一种信息论方法,通过训练编码器来保留与预测标签相关的所有信息,同时最小化表示中的其他过量信息的量。然而,原始配方需要标记数据来识别多余的信息。在这项工作中&…

【C++ Primer Plus习题】16.8

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <set> #includ…

Android 15 正式发布至 AOSP

Google官方宣布&#xff0c;将于近期发布了 Android 15&#xff0c;而在早些时候&#xff0c;Google已经将其源代码推送至 Android 开源项目 (AOSP)。未来几周内&#xff0c;Android 15 将在受支持的 Pixel 设备上正式推出&#xff0c;并将于今年晚些时候在三星、Honor、iQOO、…

easy_cloudantivirus

0x00前言 必须安装在virtualbox 攻击机&#xff1a;kali 靶机 easy_cloudantivirus 链接&#xff1a; https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/ 0x01信息搜集 经过测试发现靶场IP为192.168.56.106 进一部对IP搜集信息 发现8080端口youhttp服务。…

MySQL系列—12.Undo log

1、概念 DML 操作导致数据变化 , 将变化前的记录写入 Undo 日志。 作用 用于记录更改前的一份 copy &#xff0c;在操作出错时&#xff0c;可以用于回滚、撤销还原&#xff0c;只将数据库 逻辑地恢复到原来的样子 你 插入一条记录时&#xff0c;至少要把这条记录的主键值记下来…

上汽集团社招入职SHL测评:语言理解及数字推理高分攻略、真题题库

上汽集团社招待遇 上汽集团作为国内领先的汽车制造企业&#xff0c;其社招待遇和面试问题一直是求职者关注的焦点。以下是根据最新信息整理的上汽集团社招待遇及面试问题概览&#xff1a; 工资待遇&#xff1a;上汽集团的工资待遇在国内汽车行业中属于较高水平。根据不同职位和…

【C++二叉树】236.二叉树的最近公共祖先

236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 思路分析&#xff1a; 公共祖先满足的特征&#xff1a; p是q的孩子&#xff0c;则q是祖先&#xff0c;反之亦然。p和q是“我”的左子树和右子树中的节点&#xff0c;则“我”是祖先。&#xff08;如题目中给…

物联网——USART协议

接口 串口通信 硬件电路 电平标准 串口参数、时序 USART USART主要框图 TXE: 判断发送寄存器是否为空 RXNE: 判断接收寄存器是否非空 RTS为输出信号&#xff0c;用于表示MCU串口是否准备好接收数据&#xff0c;若输出信号为低电平&#xff0c;则说明MCU串口可以接收数据&#…

springboot实训学习笔记(5)(用户登录接口的主逻辑)

接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发以及注册时的参数合法性校验。具体往回看了解的链接如下。 springboot实训学习笔记&#xff08;4&#xff09;(Spring Validation参数校验框架、全局异常处理器)-CSDN博客文章浏览阅读576次&#xff0c;点赞7…