HarmonyOS API:全局UI方法
版本:v3.1 Beta
警告弹窗
更新时间: 2023-02-17 10:41
显示警告弹窗组件,可设置文本内容与响应回调。
说明
从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
属性
名称 | 参数类型 | 参数描述 |
show | AlertDialogParamWithConfirm | AlertDialogParamWithButtons | 定义并显示AlertDialog组件。 |
AlertDialogParamWithConfirm对象说明
参数名 | 参数类型 | 必填 | 参数描述 |
title | 否 | 弹窗标题。 | |
message | 是 | 弹窗内容。 | |
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 | 否 | 弹窗标题。 | |
message | 是 | 弹窗内容。 | |
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 })
}
}
列表选择弹窗
更新时间: 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.Bottom | |
offset | { dx: Length, dy: Length } | 否 | 弹窗相对alignment所在位置的偏移量。{ dx: 0, dy: 0 } |
sheets | Array<SheetInfo> | 是 | 设置选项内容,每个选择项支持设置图片、文本和选中的回调。 |
SheetInfo接口说明
参数名 | 参数类型 | 必填 | 参数描述 |
title | 是 | 选项的文本内容。 | |
icon | 否 | 选项的图标,默认无图标显示。 | |
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%')
}
}
自定义弹窗
更新时间: 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 | 是 | 自定义弹窗内容构造器。 | |
cancel | () => void | 否 | 点击遮障层退出时的回调。 |
autoCancel | boolean | 否 | 是否允许点击遮障层退出。 默认值:true |
alignment | 否 | 弹窗在竖直方向上的对齐方式。 默认值: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 })
}
}