harmonyOS鸿蒙-UI-自定义弹窗

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

一、创建自定义弹窗

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

@Extend(Text) function descStyle () {
  .fontSize(14)
  .fontWeight(400)
  .fontColor('#182431')
  .width('100%')
  .lineHeight(20)
  .margin({ top: 8 })
}
@CustomDialog
export default struct MyDialog{
  controller:CustomDialogController
  cancel:() => void
  confirm:() => void
  build(){
    Column(){
      Column(){
        Text('我是大标题')
      }
      Row(){
        Button('取消')
          .onClick(() => {
            this.controller.close()
            this.cancel()
          })
        Divider()
          .vertical(true)
          .height(22)
          .opacity(0.4)
        Button('确定')
          .onClick(() => {
            this.controller.close()
            this.confirm()
          })
      }.width('100%')
      .margin({ top: 22 })
      .justifyContent(FlexAlign.SpaceEvenly)
    }
    .padding(16)
  }
}

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

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

import data_preferences from '@ohos.data.preferences';
import common from '@ohos.app.ability.common';
import hilog from '@ohos.hilog';
import MyDialog from './MyDialog';

@Component
@Entry
export struct SplashPage {
  context:common.UIAbilityContext = getContext(this) as common.UIAbilityContext

  dialogController:CustomDialogController = new CustomDialogController({
    builder:MyDialog({
      cancel: this.cancel,
      confirm:this.confirm
    }),
    alignment:DialogAlignment.Bottom,
    offset:{dx:0, dy:-24}
  })

  cancel() {
    hilog.info(0xF0000, 'dbTest', '%{public}s', `dialogController is cancel`)
  }

  confirm() {
    hilog.info(0xF0000, 'dbTest', '%{public}s', `dialogController is confirm`)
  }

  build(){
    Column() {
      Button('创建弹窗').onClick(() => {
        this.dialogController.open()
      })
    }.padding({top:500})
    .alignItems(HorizontalAlign.Center)
    .width('100%')
  }
}

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值