HarmonyOS 鸿蒙Next中怎么实现类似Android的SnackBar效果,全局弹出顶层的View(可以自定义)并且不遮挡底层的UI操作交互
HarmonyOS 鸿蒙Next中怎么实现类似Android的SnackBar效果,全局弹出顶层的View(可以自定义)并且不遮挡底层的UI操作交互
请问鸿蒙中怎么实现类似Android的SnackBar的效果,全局弹出顶层的View(可以自定义)并且不遮挡底层的UI操作交互
可以使用promptAction组件能力,promptAction.openCustomDialog()。同时设置promptAction.openCustomDialog({isModal: false})来取消浮窗蒙层,进行与浮窗外事件交互。参考文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5#showdialogoptions
import promptAction from ‘@ohos.promptAction’
let customDialogId: number = 0
@Builder function customDialogBuilder() { Column() { Text(‘Custom dialog Message’).fontSize(10) Row() { Button(“确认”).onClick(() => { promptAction.closeCustomDialog(customDialogId) }) Blank().width(50) Button(“取消”).onClick(() => { promptAction.closeCustomDialog(customDialogId) }) } } }
@Entry @Component struct Index { @State message: string = ‘Hello World’
@Builder customDialogComponent() { customDialogBuilder() }
build() { Row() { Column() { Button(‘xxxx’).onClick(() => { console.log(‘xxx’) }) Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) .onClick(() => { promptAction.openCustomDialog({ builder: () => { this.customDialogComponent() }, showInSubWindow: false, offset: { dx: 5, dy: 5 }, backgroundColor: 0xd9ffffff, cornerRadius: 20, width: ‘80%’, height: 200, isModal: false, borderWidth: 1, borderStyle: BorderStyle.Dashed, //使用borderStyle属性,需要和borderWidth属性一起使用 borderColor: Color.Blue, //使用borderColor属性,需要和borderWidth属性一起使用 shadow: ({ radius: 20, color: Color.Grey, offsetX: 50, offsetY: 0 }), }).then((dialogId: number) => { customDialogId = dialogId }) }) } .width(‘100%’) } .height(‘100%’) } }
更多关于HarmonyOS 鸿蒙Next中怎么实现类似Android的SnackBar效果,全局弹出顶层的View(可以自定义)并且不遮挡底层的UI操作交互的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS 鸿蒙Next中,要实现类似Android的SnackBar效果,即全局弹出顶层的View并且不遮挡底层的UI操作交互,可以通过以下方式实现:
-
使用Ability和Window:
- 创建一个新的Ability,专门用于显示全局的弹出View。
- 使用
Window
类来设置这个Ability的窗口属性,确保它位于顶层且不遮挡其他UI的交互。可以通过设置窗口类型(如WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
,但需注意鸿蒙的具体API可能有所不同)和标志(如FLAG_NOT_FOCUSABLE
和FLAG_NOT_TOUCH_MODAL
)来实现。
-
自定义View:
- 在这个专门的Ability中,加载自定义的View布局,这个布局就是你想要显示的弹出内容。
- 通过布局文件和代码动态设置View的样式和行为。
-
控制显示和隐藏:
- 使用Ability的生命周期或者通过AI Channel等方式与其他Ability通信,控制这个全局弹出View的显示和隐藏。
需要注意的是,鸿蒙系统的API和Android有所差异,具体实现时可能需要参考鸿蒙的官方文档和API。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html