harmonyOS鸿蒙-UI-自定义弹窗

这篇具有很好参考价值的文章主要介绍了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,效果如下

customdialogcontroller,Harmony鸿蒙,ui,harmonyos,鸿蒙

 文章来源地址https://www.toymoban.com/news/detail-788591.html

到了这里,关于harmonyOS鸿蒙-UI-自定义弹窗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 鸿蒙Harmony--LocalStorage--页面级UI状态存储详解

    走的太急疼的是脚,逼的太紧累的是心,很多时候,慢一点也没关系,多给自己一些耐心和等待,保持热爱,当下即是未来,生活自有安排!  目录 一,定义 二,@LocalStorageProp定义 三,@LocalStorageProp装饰器使用规则说明  四,@LocalStorageProp变量的传递/访问规则说明  五,@Loc

    2024年01月20日
    浏览(45)
  • 鸿蒙Harmony--AppStorage--应用全局的UI状态存储详解

     无所求必满载而归,当你降低期待,降低欲望,往往会得到比较好的结果,把行动交给现在,用心甘情愿的态度,过随遇而安的生活,无论结果如何,都是一场惊喜的获得! 目录 一,定义 二,@StorageProp定义 三,@StorageProp装饰器使用规则说明 四,变量的传递/访问规则说明

    2024年01月17日
    浏览(46)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(自定义事件分发)

    ArkUI在处理触屏事件时,会在触屏事件触发前进行按压点和组件区域的触摸测试,来收集需要响应触屏事件的组件,再基于触摸测试结果分发相应的触屏事件。在父节点,开发者可以通过onChildTouchTest决定如何让子节点去做触摸测试,影响子组件的触摸测试,最终影响后续的触

    2024年04月14日
    浏览(56)
  • 鸿蒙Harmony-PersistentStorage--持久化存储UI状态储详解

    用简单的心境,对待复杂的人生,方能看淡得失,从容入世,潇洒自如,心变得简单了,世界也就简单了 目录 一,定义 二,限制条件 三,使用 LocalStorage和AppStorage都是运行时的内存,但是在应用退出再次启动后,依然能保存选定的结果,是应用开发中十分常见的现象,这就

    2024年01月18日
    浏览(48)
  • 【Harmony OS】【JAVA UI】鸿蒙智能手表开发,如何判断未联网

     在手表开发过程中,手表是否连接网络怎么判断呢?下面我们就来学习一下 【问题描述】 harmony智能手表开发,如何判断未联网(包括 wifi 和 数据业务) 【解决方案】 鸿蒙暂无判断联网的相关API。 我们可以调用http的网络请求的接口,比如下载前,可以先get或者post的接口

    2024年02月16日
    浏览(62)
  • HarmonyOS 应用开发之@Builder装饰器:自定义构建函数_harmony 构件函数

    @Builder function overBuilder( KaTeX parse error: Can\\\'t use function \\\'$\\\' in math mode at position 49: …`overBuilder===$̲{ .paramA1}`) HelloComponent({message: $$.paramA1}) } } } @Component struct HelloComponent { @Link message: string; build() { Row() { Text( HelloComponent===${this.message} ) } } } @Entry @Component struct Parent { @State label: string =

    2024年04月25日
    浏览(38)
  • 鸿蒙OS应用开发之自定义弹窗

    前面学习了文本输出,这是比较常用的输出方式,毕竟它是向人们展示内容的基本方式。在这里学习另外一个展示方式,就是弹窗的方式。说到弹窗,其实用户是非常害怕的,因为意味用户必须处理这个窗口,不处理就不能返回。特别是弹窗的广告,更是让用户痛苦不已,所

    2024年02月04日
    浏览(47)
  • 鸿蒙开发-HarmonyOS UI架构

    当我们新建一个工程之后,首先会进入Index页。我们先简单的做一个文章列表的显示 这样,我们只要把 articles 里面填充数据,就能正常显示一个列表了。 可以看到上面的代码里是没有数据的,只有一个空数组。我们想要从网络获取数据。那么,数据怎么来呢?最简单粗暴的

    2024年02月19日
    浏览(48)
  • 鸿蒙(HarmonyOS)Navigation如何实现多场景UI适配?

    应用在不同屏幕大小的设备上运行时,往往有不同的UI适配,以聊天应用举例: 在窄屏设备上,联系人和聊天区在多窗口中体现。 在宽屏设备上,联系人和聊天区在同一窗口体现。 要做好适配,往往需要开发者开发多套代码,以便运行在不同设备上。但是这样耗时耗力,于

    2024年04月09日
    浏览(50)
  • HarmonyOS Next 自定义安全键盘案例_鸿蒙next 自定义键盘(1)

    // 切换大写字母键盘 this.curKeyboardType = EKeyboardType.UPPERCASE; this.items = upperCaseKeyData; } else { // 切换小写字母键盘 this.curKeyboardType = EKeyboardType.LOWERCASE; this.items = lowerCaseKeyData; } break; // 切换特殊字符键盘 case EKeyType.SPECIAL: if (this.curKeyboardType !== EKeyboardType.SPECIAL) { this.curKeyboardType =

    2024年04月17日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包