找回密码
 立即注册
首页 业界区 业界 鸿蒙应用开发从入门到实战(二十一):ArkUI自定义弹窗 ...

鸿蒙应用开发从入门到实战(二十一):ArkUI自定义弹窗组件

烯八 5 天前
大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!
上一篇文章讲述了ArkUI提供的各种内置弹窗组件,当项目中遇到这些组件仍然不满足需求时,可以使用自定义弹窗组件。本文研究自定义弹窗组件的使用。
一、概述

当现有组件不满足要求时,可考虑自定义弹窗,自定义弹窗允许开发者自定义弹窗内容和样式。例如
1.gif

示例代码
pages/component/dialog/新建CustomDialogPage.ets文件
  1. @Entry
  2. @Component
  3. struct CustomDialogPage {
  4.   @State answer: string = '?'
  5.   controller: CustomDialogController = new CustomDialogController({
  6.     builder: TextInputDialog({
  7.       confirm: (value) => {
  8.         this.answer = value;
  9.       }
  10.     }),
  11.     alignment: DialogAlignment.Bottom,
  12.     offset: { dx: 0, dy: -30 }
  13.   })
  14.   build() {
  15.     Column({ space: 50 }) {
  16.       Row() {
  17.         Text('1+1=')
  18.           .fontWeight(FontWeight.Bold)
  19.           .fontSize(30)
  20.         Text(this.answer)
  21.           .fontWeight(FontWeight.Bold)
  22.           .fontSize(30)
  23.       }
  24.       Button('作答')
  25.         .onClick(() => {
  26.           this.controller.open();
  27.         })
  28.     }.width('100%')
  29.     .height('100%')
  30.     .justifyContent(FlexAlign.Center)
  31.   }
  32. }
  33. @CustomDialog
  34. struct TextInputDialog {
  35.   controller: CustomDialogController = new CustomDialogController({ builder: TextInputDialog() })
  36.   confirm: (value: string) => void;
  37.   value: string = '';
  38.   build() {
  39.     Column({ space: 20 }) {
  40.       Text('请输入你的答案')
  41.       TextInput({ placeholder: '请输入数字' })
  42.         .type(InputType.Number)
  43.         .onChange((value) => {
  44.           this.value = value;
  45.         })
  46.       Row({ space: 50 }) {
  47.         Button('取消')
  48.           .onClick(() => {
  49.             this.controller.close();
  50.           })
  51.         Button('确认').onClick(() => {
  52.           this.confirm(this.value);
  53.           this.controller.close();
  54.         })
  55.       }
  56.     }.padding(20)
  57.   }
  58. }
复制代码
二、使用说明

显示自定义弹窗需要使用CustomDialogController
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-common-components-custom-dialog-0000001450754206-V2
《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容,防止迷路,欢迎关注!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册