HarmonyOS bindPopup的使用

popup 绑定组件后如何不拦截焦点,需要的效果是既显示popup,又可以触发其他组件的点击事件

场景描述:需要显示popup,但必需只能手动关闭(只能依赖bindPopup传入的值关闭),需要禁止其他方式关闭,但又不能拦截焦点,可以让其他组件显示

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

可以将popup的mask属性设置为false,autoCancel设为false,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-popup-V5#custompopupoptions8类型说明

案例如下:

@Entry
@Component
struct PopupExample {
  @State handlePopup: boolean = false
  @State customPopup: boolean = false
  // popup构造器定义弹框内容
  @Builder popupBuilder() {
    Row({ space: 2 }) {
      Image($r("app.media.icon")).width(24).height(24).margin({ left: -5 })
      Text('Custom Popup').fontSize(10)
    }.width(100).height(50).padding(5)
  }

  build() {
    Flex({ direction: FlexDirection.Column }) {
      // PopupOptions 类型设置弹框内容
      Button('PopupOptions')
        .onClick(() => {
          this.handlePopup = !this.handlePopup
        })
        .bindPopup(this.handlePopup, {
          message: 'This is a popup with PopupOptions',
          placementOnTop: true,
          showInSubWindow:false,
          primaryButton: {
            value: 'confirm',
            action: () => {
              this.handlePopup = !this.handlePopup
              console.info('confirm Button click')
            }
          },
          // 第二个按钮
          secondaryButton: {
            value: 'cancel',
            action: () => {
              this.handlePopup = !this.handlePopup
              console.info('cancel Button click')
            }
          },
          onStateChange: (e) => {
            console.info(JSON.stringify(e.isVisible))
            if (!e.isVisible) {
              this.handlePopup = false
            }
          }
        })
        .position({ x: 100, y: 150 })


      // CustomPopupOptions 类型设置弹框内容
      Button('CustomPopupOptions')
        .onClick(() => {
          this.customPopup = !this.customPopup
        })
        .bindPopup(this.customPopup, {
          builder: this.popupBuilder,
          placement: Placement.Top,
          mask: false,
          popupColor: Color.Yellow,
          enableArrow: true,
          showInSubWindow: false,
          autoCancel:false,
          onStateChange: (e) => {
            if (!e.isVisible) {
              this.customPopup = false
            }
          }
        })
        .position({ x: 80, y: 300 })
    }.width('100%').padding({ top: 5 })
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 组件.bindPopup属性使用问题
402浏览 • 1回复 待解决
HarmonyOS bindPopup设置color无效
825浏览 • 0回复 待解决
HarmonyOS bindPopup如何设置箭头颜色
295浏览 • 1回复 待解决
HarmonyOS bindPopup遇到问题
73浏览 • 1回复 待解决
HarmonyOS bindPopup如何去掉圆角?
61浏览 • 1回复 待解决
bindPopup样式问题有哪些啊?
455浏览 • 1回复 待解决
HarmonyOS IAP使用
180浏览 • 0回复 待解决
HarmonyOS navigation使用
33浏览 • 1回复 待解决
HarmonyOS BuildProfile使用
22浏览 • 1回复 待解决
HarmonyOS TextInput使用
388浏览 • 1回复 待解决
HarmonyOS TextInput组件使用
30浏览 • 1回复 待解决