HarmonyOS 6 PopoverDialogV2 跟手弹出框使用文档
文章目录
- 概述
- 依赖导入
- 核心结构:跟手弹出框
- 配置详解
- 1. 状态控制
- 2. 弹出配置 PopoverDialogV2Options
- 3. 弹框内容构建器 dialogBuilder
- 4. 目标组件构建器 buttonBuilder
- 5. 挂载跟手弹出框
- 代码
- 总结
概述
PopoverDialogV2是 DialogV2 系列中的跟手弹出框,可基于目标组件位置自动定向弹出,支持将 TipsDialogV2 / SelectDialogV2 / ConfirmDialogV2 / AlertDialogV2 / LoadingDialogV2 / CustomContentDialogV2 作为内部弹窗内容。
依赖导入
import{AlertDialogV2,PopoverDialogV2,PopoverDialogV2Options,AdvancedDialogV2Button}from'@kit.ArkUI';核心结构:跟手弹出框
固定结构:
- visible:控制显示/隐藏(支持双向同步
!!) - popover:弹出框配置(builder 指定内容)
- targetBuilder:目标组件(弹框依附的按钮/区域)
PopoverDialogV2({visible:显示状态!!,popover:弹出配置,targetBuilder:目标组件构建器})配置详解
1. 状态控制
@LocalisShow:boolean=false;isShow:控制跟手框显示/隐藏
2. 弹出配置 PopoverDialogV2Options
@LocalpopoverOptions:PopoverDialogV2Options={builder:()=>{this.dialogBuilder();}}builder:指定弹框内容(必须用 @Builder 包装)
3. 弹框内容构建器 dialogBuilder
本例使用 AlertDialogV2 作为内容:
@BuilderdialogBuilder(){AlertDialogV2({content:'跟手弹出框',primaryButton:newAdvancedDialogV2Button({content:'取消',action:()=>{this.isShow=false;}}),secondaryButton:newAdvancedDialogV2Button({content:'确认',action:()=>{this.isShow=false;}})});}4. 目标组件构建器 buttonBuilder
弹框依附于此按钮:
@BuilderbuttonBuilder(){Button('跟手弹出框目标组件').onClick(()=>{this.isShow=true;});}5. 挂载跟手弹出框
PopoverDialogV2({visible:this.isShow!!,popover:this.popoverOptions,targetBuilder:()=>{this.buttonBuilder();}})visible: this.isShow!!:双向同步显示状态(官方推荐写法)popover:绑定弹框配置targetBuilder:绑定目标按钮
代码
import{AlertDialogV2,PopoverDialogV2,PopoverDialogV2Options,AdvancedDialogV2Button}from'@kit.ArkUI';@Entry@ComponentV2struct Index{@LocalisShow:boolean=false;@LocalpopoverOptions:PopoverDialogV2Options={builder:()=>{this.dialogBuilder();}}@BuilderdialogBuilder(){AlertDialogV2({content:'跟手弹出框',primaryButton:newAdvancedDialogV2Button({content:'取消',action:()=>{this.isShow=false;},}),secondaryButton:newAdvancedDialogV2Button({content:'确认',action:()=>{this.isShow=false;},}),});}@BuilderbuttonBuilder(){Button('跟手弹出框目标组件').onClick(()=>{this.isShow=true;});}build(){Column(){PopoverDialogV2({visible:this.isShow!!,popover:this.popoverOptions,targetBuilder:()=>{this.buttonBuilder();},})}}}运行效果如图:
总结
- API 版本:从API 18开始支持
- 适用模型:仅支持Stage 模型
- 设备限制:不支持 Wearable 设备
- visible 建议使用 !! 实现双向同步,状态更稳定
- targetBuilder 必须使用 @Builder包装
- 内部可嵌套任意 DialogV2 弹窗(Alert/Tips/Select/Confirm/Custom 等)
- 关闭弹框只需将
isShow = false - 不建议设置通用属性,避免布局异常
如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力
