HarmonyOS 半模态转场+Gesture 手势组件SwipeGesture问题
1.半模态组件 右上角出现一个关闭的按钮 是否可以去掉?
2.半模态组件出现的然下滑 半模态组件就关闭了 这个是否可以控制?
3.半模态套用Gesture手势组件SwipeGesture 失效并没有监听到
下列demo源码:
@Entry  
@Component  
struct GovernmentMapPage {  
  @State message: string = '政务地图';  
  @State isShow: boolean = true  
  @State sheetHeight: number = 200;  
  @State showDragBar: boolean = false;  
  
  @Builder  
  myBuilder() {  
    Column() {  
      Button("半屏")  
        .margin(10)  
        .fontSize(20)  
        .onClick(() => {  
          this.sheetHeight = 500;  
        })  
      Button("满屏")  
        .margin(10)  
        .fontSize(20)  
        .onClick(() => {  
          this.sheetHeight = -1;  
        })  
      Button("五分之一")  
        .margin(10)  
        .fontSize(20)  
        .onClick(() => {  
          this.sheetHeight = 200;  
        })  
    }  
    .width('100%')  
    .height('100%')  
    .gesture(  
      // 绑定滑动手势且限制仅在竖直方向滑动时触发  
      SwipeGesture({ direction: SwipeDirection.Vertical })// 当滑动手势触发时,获取滑动的速度和角度,实现对组件的布局参数的修改  
        .onAction((event: GestureEvent) => {  
          // console.log("滑动速度="+event.speed)  
          console.log("滑动角度=" + event.angle)  
          if (event.angle > 0) {  
            if (this.sheetHeight >= -1) {  
              this.sheetHeight = 500;  
            } else if (this.sheetHeight >= 500) {  
              this.sheetHeight = 200;  
            }  
          } else if (event.angle > 0) {  
            if (this.sheetHeight >= 200) {  
              this.sheetHeight = 500;  
            } else if (this.sheetHeight >= 500) {  
              this.sheetHeight = -1;  
            }  
          }  
        })  
    )  
  
  }  
  build() {  
    Column() {  
      Button("政务地图")  
        .onClick(() => {  
          this.isShow = true  
        })  
        .fontSize(20)  
        .margin(10)  
        .bindSheet($$this.isShow, this.myBuilder(), {  
          height: this.sheetHeight,  
          dragBar: this.showDragBar,  
          backgroundColor: Color.Blue,  
          onAppear: () => {  
            console.log("BindSheet onAppear.")  
          },  
          onDisappear: () => {  
            console.log("BindSheet onDisappear.")  
          }  
        })  
    }  
    .justifyContent(FlexAlign.Center)  
    .width('100%')  
    .height('100%')  
  }  
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 2
 
        待解决
        
相关问题
 HarmonyOS 半模态转场,如何透传手势? 
1728浏览  • 1回复 待解决
HarmonyOS  半模态转场 
1250浏览  • 1回复 待解决
HarmonyOS 关于使用bindSheet构建半模态转场问题 
2525浏览  • 1回复 待解决
HarmonyOS 半模态转场中传入的页面内容问题 
1443浏览  • 1回复 待解决
HarmonyOS 关于半模态转场的疑问 
1147浏览  • 1回复 待解决
半模态转场如何控制固定高度 
3085浏览  • 1回复 待解决
HarmonyOS 半模态转场如何固定组件不响应上拉 
1452浏览  • 1回复 待解决
如何固定半模态转场的高度 
1803浏览  • 1回复 待解决
HarmonyOS 关于半模态转场bindSheet参数SheetOptions 
1462浏览  • 1回复 待解决
HarmonyOS  怎么修改半模态转场页面顶部圆角大小 
2539浏览  • 1回复 待解决
半模态转场回弹效果和底部按钮固定demo 
2836浏览  • 1回复 待解决
HarmonyOS 半模态转场,如何始终保留部分高度始终展示? 
2072浏览  • 1回复 待解决
半模态转场来实现弹框样式的页面 
2150浏览  • 1回复 待解决
HarmonyOS 半模态转场支持在某个控件上弹出吗? 
1335浏览  • 1回复 待解决
HarmonyOS Grid和半模态问题 
1224浏览  • 1回复 待解决
HarmonyOS  使用半模态转场指定SheetMode为EMBEDDED时如何使用 
1391浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何使用bindSheet实现半模态转场效果? 
1852浏览  • 1回复 待解决
在半模态中嵌套List组件,下滑到底关闭半模态组件 
1723浏览  • 1回复 待解决
半模态转场关闭弹窗重新打开时无需重新加载 
2235浏览  • 1回复 待解决
HarmonyOS bindSheet 系统半模态转场动画关闭视图会出现回弹闪烁 
2022浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中实现半模态页面转场? 
1969浏览  • 1回复 待解决
HarmonyOS 半模态页面切换高度档位问题 
1347浏览  • 1回复 待解决
HarmonyOS 半模态转场弹层的圆角没有自定义大小的api 
1339浏览  • 1回复 待解决
HarmonyOS 半模态相关使用 
1196浏览  • 1回复 待解决
HarmonyOS bindSheet半模态弹窗 
2140浏览  • 1回复 待解决





















你提出了三个主要问题,以下是针对每个问题的解决方案:
dragBar 为false 来禁用拖动关闭功能。如果希望保留拖动效果但不关闭,需要自定义手势处理逻辑。### 改进后的代码
### 解释
dragBar 设为false 禁用拖动关闭功能。SwipeGesture 控制高度变化而不是关闭组件。event.angle < 0),确保不同方向的滑动能正确响应高度变化。通过这些修改,可以提高组件的可控性和用户交互体验。如果有进一步的问题或需求,请随时提问。
问题1:可以使用showClose来控制关闭按钮的显示。
问题2:可以使用shouldDismiss来监听下拉动作。
问题3:可以使用detents来实现根据手势滑动自动变更半模态组件高度。
参考文档中示例2:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-sheet-transition-V5#%E7%A4%BA%E4%BE%8B2