#鸿蒙通关秘籍#如何为自定义弹窗添加交互按钮?

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
云海谜SCM

可以通过在@CustomDialog装饰器内添加按钮来实现交互功能,如下:

  1. 定义具有交互功能的自定义弹窗。
@CustomDialog
struct CustomDialogExample {
  cancel?: () => void
  confirm?: () => void
  controller: CustomDialogController

  build() {
    Column() {
      Text('我是内容').fontSize(20).margin({ top: 10, bottom: 10 })
      Flex({ justifyContent: FlexAlign.SpaceAround }) {
        Button('cancel')
          .onClick(() => {
            this.controller.close()
            if (this.cancel) {
              this.cancel()
            }
          }).backgroundColor(0xffffff).fontColor(Color.Black)
        Button('confirm')
          .onClick(() => {
            this.controller.close()
            if (this.confirm) {
              this.confirm()
            }
          }).backgroundColor(0xffffff).fontColor(Color.Red)
      }.margin({ bottom: 10 })
    }
  }
}
  1. 在页面组件中处理弹窗交互逻辑。
@Entry
@Component
struct CustomDialogUser {
  dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialogExample({
      cancel: ()=> { this.onCancel() },
      confirm: ()=> { this.onAccept() },
    }),
  })

  onCancel() {
    console.info('Callback when the first button is clicked')
  }

  onAccept() {
    console.info('Callback when the second button is clicked')
  }

  build() {
    Column() {
      Button('click me')
        .onClick(() => {
          this.dialogController.open()
        })
    }.width('100%').margin({ top: 5 })
  }
}

通过这样的配置,可以让弹窗在点击按钮时触发相应的处理函数,实现交互功能。

分享
微博
QQ
微信
回复
7天前
相关问题
自定义弹窗自定义转场动画
1109浏览 • 1回复 待解决
如何自定义弹窗中再次弹窗
2255浏览 • 1回复 待解决
自定义弹窗如何嵌套使用
1648浏览 • 1回复 待解决
如何设置自定义弹窗位置
2062浏览 • 1回复 待解决