当前位置:   article > 正文

harmonyOS鸿蒙-UI-自定义弹窗_new customdialogcontroller

new customdialogcontroller

自定义弹窗(CustomDialog)可用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹窗

一、创建自定义弹窗

1、使用@CustomDialog装饰器装饰自定义弹窗,此装饰器内进行自定义内容(也就是弹框内容)

  1. @Extend(Text) function descStyle () {
  2. .fontSize(14)
  3. .fontWeight(400)
  4. .fontColor('#182431')
  5. .width('100%')
  6. .lineHeight(20)
  7. .margin({ top: 8 })
  8. }
  9. @CustomDialog
  10. export default struct MyDialog{
  11. controller:CustomDialogController
  12. cancel:() => void
  13. confirm:() => void
  14. build(){
  15. Column(){
  16. Column(){
  17. Text('我是大标题')
  18. }
  19. Row(){
  20. Button('取消')
  21. .onClick(() => {
  22. this.controller.close()
  23. this.cancel()
  24. })
  25. Divider()
  26. .vertical(true)
  27. .height(22)
  28. .opacity(0.4)
  29. Button('确定')
  30. .onClick(() => {
  31. this.controller.close()
  32. this.confirm()
  33. })
  34. }.width('100%')
  35. .margin({ top: 22 })
  36. .justifyContent(FlexAlign.SpaceEvenly)
  37. }
  38. .padding(16)
  39. }
  40. }

上面代码中controller变量是弹框控制器,可以控制弹窗展示和关闭,该变量值是自动赋值。cancel和confirm两个函数是由父组件传入,在弹窗点击取消和确定时调用,可以用来改变父组件的状态值

2、创建构造器,与装饰器关联

  1. import data_preferences from '@ohos.data.preferences';
  2. import common from '@ohos.app.ability.common';
  3. import hilog from '@ohos.hilog';
  4. import MyDialog from './MyDialog';
  5. @Component
  6. @Entry
  7. export struct SplashPage {
  8. context:common.UIAbilityContext = getContext(this) as common.UIAbilityContext
  9. dialogController:CustomDialogController = new CustomDialogController({
  10. builder:MyDialog({
  11. cancel: this.cancel,
  12. confirm:this.confirm
  13. }),
  14. alignment:DialogAlignment.Bottom,
  15. offset:{dx:0, dy:-24}
  16. })
  17. cancel() {
  18. hilog.info(0xF0000, 'dbTest', '%{public}s', `dialogController is cancel`)
  19. }
  20. confirm() {
  21. hilog.info(0xF0000, 'dbTest', '%{public}s', `dialogController is confirm`)
  22. }
  23. build(){
  24. Column() {
  25. Button('创建弹窗').onClick(() => {
  26. this.dialogController.open()
  27. })
  28. }.padding({top:500})
  29. .alignItems(HorizontalAlign.Center)
  30. .width('100%')
  31. }
  32. }

上面代码中dialogController就是弹窗控制器,即CustomDialogController对象,该对象构造方法接收一个对象参数,其中builder对应值就是自定义的弹窗组件,需要@CustomDialog标注,alignment定义弹窗的位置,此处弹窗展示在底部,offset是弹窗相对于当前位置的偏移量,此处相对于底部再向上偏移24,效果如下

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/124432?site
推荐阅读
相关标签
  

闽ICP备14008679号