HarmonyOS API:全局UI方法

joytrian
发布于 2023-3-25 17:58
浏览
0收藏

版本:v3.1 Beta

警告弹窗

更新时间: 2023-02-17 10:41


显示警告弹窗组件,可设置文本内容与响应回调。


说明

从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

属性

名称

参数类型

参数描述

show

AlertDialogParamWithConfirm | AlertDialogParamWithButtons

定义并显示AlertDialog组件。

AlertDialogParamWithConfirm对象说明

参数名

参数类型

必填

参数描述

title

​ResourceStr​

弹窗标题。

message

​ResourceStr​

弹窗内容。

autoCancel

boolean

点击遮障层时,是否关闭弹窗。

默认值:true

confirm

{

value: ​​ResourceStr​​,

fontColor?: ​​ResourceColor​​,

backgroundColor?: ​​ResourceColor​​,

action: () => void

}

确认按钮的文本内容、文本色、按钮背景色和点击回调。

cancel

() => void

点击遮障层关闭dialog时的回调。

alignment

DialogAlignment

弹窗在竖直方向上的对齐方式。

默认值:DialogAlignment.Default

offset

​Offset​

弹窗相对alignment所在位置的偏移量。

gridCount

number

弹窗容器宽度所占用栅格数。

AlertDialogParamWithButtons对象说明

参数名

参数类型

必填

参数描述

title

​ResourceStr​

弹窗标题。

message

​ResourceStr​

弹窗内容。

autoCancel

boolean

点击遮障层时,是否关闭弹窗。

默认值:true

primaryButton

{

value: ​​ResourceStr​​,

fontColor?: ​​ResourceColor​​,

backgroundColor?: ​​ResourceColor​​,

action: () => void;

}

按钮的文本内容、文本色、按钮背景色和点击回调。

secondaryButton

{

value: ​​ResourceStr​​,

fontColor?: ​​ResourceColor​​,

backgroundColor?: ​​ResourceColor​​,

action: () => void;

}

按钮的文本内容、文本色、按钮背景色和点击回调。

cancel

() => void

点击遮障层关闭dialog时的回调。

alignment

DialogAlignment

弹窗在竖直方向上的对齐方式。

默认值:DialogAlignment.Default

offset

​Offset​

弹窗相对alignment所在位置的偏移量。

gridCount

number

弹窗容器宽度所占用栅格数。

DialogAlignment

名称

描述

Top

垂直顶部对齐。

Center

垂直居中对齐。

Bottom

垂直底部对齐。

Default

默认对齐。

TopStart8+

左上对齐。

TopEnd8+

右上对齐。

CenterStart8+

左中对齐。

CenterEnd8+

右中对齐。

BottomStart8+

左下对齐。

BottomEnd8+

右下对齐。

示例

// xxx.ets
@Entry
@Component
struct AlertDialogExample {
  build() {
    Column({ space: 5 }) {
      Button('one button dialog')
        .onClick(() => {
          AlertDialog.show(
            {
              title: 'title',
              message: 'text',
              autoCancel: true,
              alignment: DialogAlignment.Bottom,
              offset: { dx: 0, dy: -20 },
              gridCount: 3,
              confirm: {
                value: 'button',
                action: () => {
                  console.info('Button-clicking callback')
                }
              },
              cancel: () => {
                console.info('Closed callbacks')
              }
            }
          )
        })
        .backgroundColor(0x317aff)
      Button('two button dialog')
        .onClick(() => {
          AlertDialog.show(
            {
              title: 'title',
              message: 'text',
              autoCancel: true,
              alignment: DialogAlignment.Bottom,
              gridCount: 4,
              offset: { dx: 0, dy: -20 },
              primaryButton: {
                value: 'cancel',
                action: () => {
                  console.info('Callback when the first button is clicked')
                }
              },
              secondaryButton: {
                value: 'ok',
                action: () => {
                  console.info('Callback when the second button is clicked')
                }
              },
              cancel: () => {
                console.info('Closed callbacks')
              }
            }
          )
        }).backgroundColor(0x317aff)
    }.width('100%').margin({ top: 5 })
  }
}

HarmonyOS API:全局UI方法-鸿蒙开发者社区

列表选择弹窗

更新时间: 2023-02-17 10:41


列表弹窗。


说明

从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

ActionSheet.show

show(value: { title: string | Resource, message: string | Resource, confirm?: {value: string | Resource, action:() => void}, cancel?:()=>void, sheets: Array<SheetInfo>, autoCancel?:boolean, alignment?: DialogAlignment, offset?: { dx: number | string | Resource; dy: number | string | Resource } })


定义列表弹窗并弹出。


参数:


参数名

参数类型

必填

参数描述

title

​Resource​​ | string

弹窗标题。

message

​Resource​​ | string

弹窗内容。

autoCancel

boolean

点击遮障层时,是否关闭弹窗。

默认值:true

confirm

{

value: ​​ResourceStr​​,

action: () => void

}

确认按钮的文本内容和点击回调。

默认值:

value:按钮文本内容。

action: 按钮选中时的回调。

cancel

() => void

点击遮障层关闭dialog时的回调。

alignment

​DialogAlignment​

弹窗在竖直方向上的对齐方式。

默认值:DialogAlignment.Bottom

offset

{

dx: Length,

dy: Length

}

弹窗相对alignment所在位置的偏移量。{

dx: 0,

dy: 0

}

sheets

Array<SheetInfo>

设置选项内容,每个选择项支持设置图片、文本和选中的回调。

SheetInfo接口说明

参数名

参数类型

必填

参数描述

title

​ResourceStr​

选项的文本内容。

icon

​ResourceStr​

选项的图标,默认无图标显示。

action

()=>void

选项选中的回调。

示例

@Entry
@Component
struct ActionSheetExample {
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Button('Click to Show ActionSheet')
        .onClick(() => {
          ActionSheet.show({
            title: 'ActionSheet title',
            message: 'message',
            autoCancel: true,
            confirm: {
              value: 'Confirm button',
              action: () => {
                console.log('Get Alert Dialog handled')
              }
            },
            cancel: () => {
              console.log('actionSheet canceled')
            },
            alignment: DialogAlignment.Bottom,
            offset: { dx: 0, dy: -10 },
            sheets: [
              {
                title: 'apples',
                action: () => {
                  console.log('apples')
                }
              },
              {
                title: 'bananas',
                action: () => {
                  console.log('bananas')
                }
              },
              {
                title: 'pears',
                action: () => {
                  console.log('pears')
                }
              }
            ]
          })
        })
    }.width('100%')
    .height('100%')
  }
}

HarmonyOS API:全局UI方法-鸿蒙开发者社区

自定义弹窗

更新时间: 2023-03-03 17:21


通过CustomDialogController类显示自定义弹窗。使用弹窗组件时,可优先考虑自定义弹窗,便于自定义弹窗的样式与内容。


说明

从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

接口

CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean, alignment?: DialogAlignment, offset?: Offset, customStyle?: boolean, gridCount?: number})


参数:

参数名

参数类型

必填

参数描述

builder

​CustomDialog​

自定义弹窗内容构造器。

cancel

() => void

点击遮障层退出时的回调。

autoCancel

boolean

是否允许点击遮障层退出。

默认值:true

alignment

​DialogAlignment​

弹窗在竖直方向上的对齐方式。

默认值:DialogAlignment.Default

offset

​Offset​

弹窗相对alignment所在位置的偏移量。

customStyle

boolean

弹窗容器样式是否自定义。

默认值:false,弹窗容器的宽度根据栅格系统自适应,不跟随子节点;高度自适应子节点,最大为窗口高度的90%;圆角为24vp。

gridCount8+

number

弹窗宽度占​​栅格宽度​​的个数。

默认值为4,异常值按默认值处理,最大栅格数为系统最大栅格数。

CustomDialogController

导入对象

dialogController : CustomDialogController = new CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean})

open()

open(): void

显示自定义弹窗内容,若已显示,则不生效。

close

close(): void

关闭显示的自定义弹窗,若已关闭,则不生效。

示例

// xxx.ets
@CustomDialog
struct CustomDialogExample {
  @Link textValue: string
  @Link inputValue: string
  controller: CustomDialogController
  cancel: () => void
  confirm: () => void

  build() {
    Column() {
      Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
      TextInput({ placeholder: '', text: this.textValue }).height(60).width('90%')
        .onChange((value: string) => {
          this.textValue = value
        })
      Text('Whether to change a text?').fontSize(16).margin({ bottom: 10 })
      Flex({ justifyContent: FlexAlign.SpaceAround }) {
        Button('cancel')
          .onClick(() => {
            this.controller.close()
            this.cancel()
          }).backgroundColor(0xffffff).fontColor(Color.Black)
        Button('confirm')
          .onClick(() => {
            this.inputValue = this.textValue
            this.controller.close()
            this.confirm()
          }).backgroundColor(0xffffff).fontColor(Color.Red)
      }.margin({ bottom: 10 })
    }
  }
}

@Entry
@Component
struct CustomDialogUser {
  @State textValue: string = ''
  @State inputValue: string = 'click me'
  dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialogExample({
      cancel: this.onCancel,
      confirm: this.onAccept,
      textValue: $textValue,
      inputValue: $inputValue
    }),
    cancel: this.existApp,
    autoCancel: true,
    alignment: DialogAlignment.Default,
    offset: { dx: 0, dy: -20 },
    gridCount: 4,
    customStyle: false
  })

  aboutToDisappear() {
    delete this.dialogController,
    this.dialogController = undefined
  }

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

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

  existApp() {
    console.info('Click the callback in the blank area')
  }

  build() {
    Column() {
      Button(this.inputValue)
        .onClick(() => {
          if (this.dialogController != undefined) {
            this.dialogController.open()
          }
        }).backgroundColor(0x317aff)
    }.width('100%').margin({ top: 5 })
  }
}

HarmonyOS API:全局UI方法-鸿蒙开发者社区


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-methods-custom-dialog-box-0000001477981237-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001477981237__导入对象​

收藏
回复
举报
回复
    相关推荐