【鸿蒙 HarmonyOS NEXT】popup弹窗

news/2024/12/21 21:15:12/

一、背景

给组件绑定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构造器定义弹框内容@BuilderpopupBuilder() {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.ppmy.cn/news/1527448.html

相关文章

果蔬识别系统性能优化之路(五)

目录 前情提要剩下问题 解决方案新建storeFeature表实现ivf的动态增删改查 结语 前情提要 果蔬识别系统性能优化之路(四) 剩下问题 新建store_feature表,关联storeCode和featureId表,对数据库进行规范化,创建一个新…

Docker torchserve 部署模型流程

1.拉取官方镜像 地址: https://hub.docker.com/r/pytorch/torchserve/tags docker pull pytorch/torchserve:0.7.1-gpu2. docker启动指令 CPU docker run --rm -it -d -p 8380:8080 -p 8381:8081 --name torch-server -v /path/model-server/extra-files:/home/model-serve…

计算机四级操作系统考试大纲.md

基本要求 1.掌握操作系统的基本概念、基本结构及运行机制。 操作系统(Operating System,简称OS)是计算机系统中负责管理和控制计算机硬件与软件资源的核心软件,它提供了用户与计算机硬件之间的接口&#…

HC-SR04超声波传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ultrasonic.h文件 ultrasonic.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HC-SR04超声波传感器是通过发送和接收超声波,利用时间差和声音传播速度…

linux 双网卡服务器突然断电后网卡单通故障解决

某台linux 双网卡服务器突然断电后网卡单通故障解决 故障现象:断电后重启服务器,主用网卡IP只能同网段访问,其他网段无法访问,备用网卡则正常; 解决方案:route -n查询路由信息,发现主网卡路由…

JavaWeb开发02 - js+vue

什么是JavaScript? JavaScript(简称:JS) 是一门跨平台、面向对象的脚本语言。是用来控制网页行为的&#xff0c;它能使网页可交互。 JS引入方式 内部脚本:将JS代码定义在HTML页面中 JavaScript代码必须位于<script></script>标签之间在HTML文档中&#xff0c;可…

财富之眼用经济思维看清世界PDF高清下载

财富之眼用经济思维看清世界.pdf: 下载地址&#xff1a; http://share.vpssw.com/f/28426853-1358046308-e8b70f

大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…