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 半模态转场,如何透传手势?
207浏览 • 1回复 待解决
HarmonyOS 半模态转场中传入的页面内容问题
293浏览 • 1回复 待解决
HarmonyOS 关于使用bindSheet构建半模态转场问题
618浏览 • 1回复 待解决
半模态转场如何控制固定高度
1811浏览 • 1回复 待解决
HarmonyOS 怎么修改半模态转场页面顶部圆角大小
370浏览 • 0回复 待解决
如何固定半模态转场的高度
353浏览 • 1回复 待解决
HarmonyOS 半模态转场,如何始终保留部分高度始终展示?
278浏览 • 1回复 待解决
半模态转场回弹效果和底部按钮固定demo
1540浏览 • 1回复 待解决
HarmonyOS 半模态转场支持在某个控件上弹出吗?
200浏览 • 1回复 待解决
HarmonyOS bindSheet 系统半模态转场动画关闭视图会出现回弹闪烁
362浏览 • 1回复 待解决
半模态转场来实现弹框样式的页面
749浏览 • 1回复 待解决
在半模态中嵌套List组件,下滑到底关闭半模态组件
302浏览 • 1回复 待解决
半模态转场关闭弹窗重新打开时无需重新加载
772浏览 • 1回复 待解决
HarmonyOS 使用全模态转场绑定全屏模态页面的疑问
246浏览 • 1回复 待解决
应用怎么实现半模态效果
2153浏览 • 1回复 待解决
基于bindSheet的半模态弹窗
815浏览 • 1回复 待解决
HarmonyOS 半模态转场是否支持收起后在底部显示标题,而且拖拽标题后还可以再展开?
136浏览 • 1回复 待解决
HarmonyOS List组件在bindSheet半模态里面进行加载,监听底部的onReachEnd不生效
151浏览 • 1回复 待解决
HarmonyOS 全屏模态转场和软键盘的层级关系
287浏览 • 1回复 待解决
HarmonyOS 模态转场页面,无法一直保持显示
267浏览 • 0回复 待解决
如何实现模态转场操作过程?
221浏览 • 1回复 待解决
CustomDialog如何实现半模态详情页效果
1641浏览 • 1回复 待解决
什么叫模态、半模态,这两个和UiAbility、UIExtensionAbility有什么关系?
1878浏览 • 1回复 待解决
全屏模态转场+隐式共享元素实现一镜到底
1037浏览 • 1回复 待解决
JS开发原子化服务半模态的页面如何开发
4175浏览 • 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