HarmonyOS 在子组件中使用bindPopup后,会导致子组件的hover状态一直跳变,这个有什么解决办法

在子组件中使用bindPopup后,会导致子组件的hover状态一直跳变,这个有什么解决办法

import { Chip } from '@ohos.arkui.advanced.Chip';
import { Child } from './Child';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Row(){
      Child()
    }
    .height('100%')
    .width('100%')
  }
}

@Preview
@Component
export struct Child {
  @Builder
  childPopupBuilder() {
    Text('popup测试······')
      .padding('8vp')
  };
  @State isChildHover: boolean = false;

  build() {
    Row() {
      Text("popup测试")
        .fontSize($r('sys.float.Subtitle_S'))
        .fontColor($r('sys.color.ohos_id_color_text_primary_activated'))
        .fontWeight(FontWeight.Medium)
        .textAlign(TextAlign.Center)
        .backgroundColor(this.isChildHover ? $r('sys.color.ohos_id_color_hover') : $r('sys.color.ohos_toggle_bg_transparent'))
        .padding({
          left: '6vp',
          right: '6vp',
          bottom: '4vp',
          top: '4vp'
        })
        .margin({ right: '-6vp', bottom: '4vp' })
        .borderRadius($r('sys.float.corner_radius_level4'))
        .onHover((isHover?: boolean) => {
          this.isChildHover = isHover ?? false;
        })
        .accessibilityDescription(' ')
        .bindPopup(this.isChildHover, {
          builder: this.childPopupBuilder(),
          placement: Placement.BottomRight,
          enableArrow: false
        })
    }
  }
}
HarmonyOS
2025-01-09 15:20:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

原因分析:opup的mask默认为true。弹出popup时会出现蒙层,导致无法hover宿主组件

解决措施:bindPopup时,将mask设置为false

分享
微博
QQ
微信
回复
2025-01-09 17:52:28
相关问题
HarmonyOS 组件状态绑定
186浏览 • 1回复 待解决
组件组件使用@Link双向同步
1641浏览 • 1回复 待解决
HarmonyOS 组件.bindPopup属性使用问题
636浏览 • 1回复 待解决
组件调用组件方法
1829浏览 • 1回复 待解决
HarmonyOS Tabs组件组件问题
884浏览 • 1回复 待解决