当前位置:   article > 正文

鸿蒙HarmonyOS实战-ArkUI组件(CustomDialog)_鸿蒙 自定义对话框

鸿蒙 自定义对话框

 一、CustomDialog

CustomDialog组件是一种自定义对话框,可以通过开发人员根据特定的要求定制内容和布局。它允许开发人员创建一个完全可定制的对话框,可以显示任何类型的内容,例如文本、图像、表单和按钮。

CustomDialog通常用于在执行任务之前向用户提供额外的信息或输入选项,例如确认删除操作或输入登录凭据。它们还可以用于创建弹出窗口来显示信息或广告。

CustomDialog通常涉及创建一个新的布局文件,并扩展Dialog类来自定义其行为和外观。

1.创建自定义弹窗

HarmonyOS的@CustomDialog是一个自定义对话框控件,它可以帮助开发人员快速创建各种各样的对话框,包括提示框、确认框、输入框等。

使用@CustomDialog,开发人员可以自定义对话框的标题、消息、按钮、图标等属性,以及对话框的样式和布局。此外,它还支持自定义对话框的背景、动画和触发事件等属性,以满足不同场景的需求。

  1. @CustomDialog
  2. struct CustomDialogExample {
  3. controller: CustomDialogController
  4. build() {
  5. Column() {
  6. Text('我是内容')
  7. .fontSize(20)
  8. .margin({ top: 10, bottom: 10 })
  9. }
  10. }
  11. }
  12. @Entry
  13. @Component
  14. struct TextInputSample {
  15. dialogController: CustomDialogController = new CustomDialogController({
  16. builder: CustomDialogExample({}),
  17. })
  18. build() {
  19. Column() {
  20. Flex({justifyContent:FlexAlign.Center}){
  21. Button('click me')
  22. .onClick(() => {
  23. this.dialogController.open()
  24. })
  25. }.width('100%')
  26. }.padding(20)
  27. }
  28. }

在这里插入图片描述

2.弹窗的交互

弹窗数据交互的作用包括提高用户体验、简化流程、提高交互性、实现数据交互和优化UI设计等。它可以在用户操作过程中快速展示信息或选项,减少操作繁琐度和时间成本;同时作为数据交互的桥梁,传递用户输入或选择的信息进行处理,展示需要的信息给用户。弹窗数据交互可以提供灵活的交互形式,同时也可以通过多样化的UI设计形式实现独特的设计效果。

  1. @CustomDialog
  2. struct CustomDialogExample {
  3. controller: CustomDialogController
  4. cancel: () => void
  5. confirm: () => void
  6. build() {
  7. Column() {
  8. Text('我是内容').fontSize(20).margin({ top: 10, bottom: 10 })
  9. Flex({ justifyContent: FlexAlign.SpaceAround }) {
  10. Button('cancel')
  11. .onClick(() => {
  12. this.controller.close()
  13. this.cancel()
  14. }).backgroundColor(0xffffff).fontColor(Color.Black)
  15. Button('confirm')
  16. .onClick(() => {
  17. this.controller.close()
  18. this.confirm()
  19. }).backgroundColor(0xffffff).fontColor(Color.Red)
  20. }.margin({ bottom: 10 })
  21. }
  22. }
  23. }
  24. @Entry
  25. @Component
  26. struct TextInputSample {
  27. dialogController: CustomDialogController = new CustomDialogController({
  28. builder: CustomDialogExample({
  29. cancel: this.onCancel,
  30. confirm: this.onAccept,
  31. }),
  32. alignment: DialogAlignment.Default, // 可设置dialog的对齐方式,设定显示在底部或中间等,默认为底部显示
  33. })
  34. onCancel() {
  35. console.info('Callback when the first button is clicked')
  36. }
  37. onAccept() {
  38. console.info('Callback when the second button is clicked')
  39. }
  40. build() {
  41. Column() {
  42. Flex({justifyContent:FlexAlign.Center}){
  43. Button('click me')
  44. .onClick(() => {
  45. this.dialogController.open()
  46. })
  47. }.width('100%')
  48. }.padding(20)
  49. }
  50. }

在这里插入图片描述

3.案例

  1. // xxx.ets
  2. @CustomDialog
  3. struct CustomDialogExample {
  4. controller: CustomDialogController
  5. cancel: () => void
  6. confirm: () => void
  7. build() {
  8. Column() {
  9. Text('我是弹窗案例').fontSize(20).margin({ top: 10, bottom: 10 })
  10. Flex({ justifyContent: FlexAlign.SpaceAround }) {
  11. Button('取消')
  12. .onClick(() => {
  13. this.controller.close()
  14. this.cancel()
  15. }).backgroundColor(0xffffff).fontColor(Color.Black)
  16. Button('确认')
  17. .onClick(() => {
  18. this.controller.close()
  19. this.confirm()
  20. }).backgroundColor(0xffffff).fontColor(Color.Red)
  21. }.margin({ bottom: 10 })
  22. }
  23. }
  24. }
  25. @Entry
  26. @Component
  27. struct DialogExample {
  28. dialogController: CustomDialogController = new CustomDialogController({
  29. builder: CustomDialogExample({
  30. cancel: this.onCancel,
  31. confirm: this.onAccept,
  32. }),
  33. alignment: DialogAlignment.Default, // 可设置dialog的对齐方式,设定显示在底部或中间等,默认为底部显示
  34. })
  35. onCancel() {
  36. console.info('取消')
  37. }
  38. onAccept() {
  39. console.info('确认')
  40. }
  41. build() {
  42. Flex({ justifyContent: FlexAlign.Center }) {
  43. Button('点我')
  44. .onClick(() => {
  45. this.dialogController.open()
  46. })
  47. }.width('100%')
  48. }
  49. }

在这里插入图片描述

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

推荐阅读
相关标签