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 半模态转场,如何透传手势?
346浏览 • 1回复 待解决
HarmonyOS 关于使用bindSheet构建半模态转场问题
864浏览 • 1回复 待解决
HarmonyOS 半模态转场中传入的页面内容问题
403浏览 • 1回复 待解决
半模态转场如何控制固定高度
1909浏览 • 1回复 待解决
如何固定半模态转场的高度
515浏览 • 1回复 待解决
HarmonyOS 怎么修改半模态转场页面顶部圆角大小
665浏览 • 0回复 待解决
HarmonyOS 半模态转场,如何始终保留部分高度始终展示?
434浏览 • 1回复 待解决
半模态转场回弹效果和底部按钮固定demo
1652浏览 • 1回复 待解决
HarmonyOS 半模态转场支持在某个控件上弹出吗?
298浏览 • 1回复 待解决
半模态转场来实现弹框样式的页面
890浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中实现半模态页面转场?
109浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用bindSheet实现半模态转场效果?
95浏览 • 1回复 待解决
在半模态中嵌套List组件,下滑到底关闭半模态组件
394浏览 • 1回复 待解决
HarmonyOS bindSheet 系统半模态转场动画关闭视图会出现回弹闪烁
511浏览 • 1回复 待解决
半模态转场关闭弹窗重新打开时无需重新加载
888浏览 • 1回复 待解决
HarmonyOS bindSheet半模态弹窗
276浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS Next中实现半模态与全屏模态的组合页面转场?
79浏览 • 1回复 待解决
HarmonyOS 使用全模态转场绑定全屏模态页面的疑问
401浏览 • 1回复 待解决
基于bindSheet的半模态弹窗
1009浏览 • 1回复 待解决
应用怎么实现半模态效果
2264浏览 • 1回复 待解决
HarmonyOS 半模态转场是否支持收起后在底部显示标题,而且拖拽标题后还可以再展开?
220浏览 • 1回复 待解决
HarmonyOS List组件在bindSheet半模态里面进行加载,监听底部的onReachEnd不生效
345浏览 • 1回复 待解决
HarmonyOS 如何在List或者Grid中使用半模态 bindSheet
0浏览 • 0回复 待解决
HarmonyOS 模态转场页面,无法一直保持显示
398浏览 • 0回复 待解决
CustomDialog如何实现半模态详情页效果
1739浏览 • 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