学习笔记(二十九):ArkUi-@ohos.promptAction (弹窗)
概述:
创建并显示文本提示框、对话框和操作菜单。
注意:
1、本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用
2、该模块不支持在UIAbility的文件声明处使用,即不能在UIAbility的生命周期中调用,需要在创建组件实例后使用。
一、导入模块
import { promptAction } from '@kit.ArkUI';
二、promptAction.showToast
showToast(options: ShowToastOptions): void
创建并显示文本提示框
1、简单使用:
// @ohos.promptAction (弹窗) 使用示例 import { promptAction } from '@kit.ArkUI'; @Entry @Component struct PromptActionExample { @State message: string = 'Hello World' build() { Row() { Column() { Button('toast') .fontSize(20) .fontWeight(FontWeight.Bold) .onClick(()=>{ promptAction.showToast({ message:'提示内容' }) }) } .width('100%') } .height('100%') } }
2、ShowToastOptions,文本提示框的选项
1、message,必填
string | Resource类型,显示的文本信息
说明:默认字体为'Harmony Sans',不支持设置其他字体。
2、duration,非必填
number类型,显示时长(毫秒)
说明:默认值1500ms,取值区间:1500ms-10000ms。若小于1500ms则取默认值,若大于10000ms则取上限值10000ms。
3、bottom,非必填
string | number类型,设置弹窗底部边框距离导航条的高度
说明:默认值:80vp;ToastShowMode.TOP_MOST模式下,软键盘拉起时,如果bottom值过小,toast要被软键盘遮挡时,会自动避让至距离软键盘80vp处。ToastShowMode.DEFAULT模式下,软键盘拉起时,会上移软键盘的高度。
4、showMode,非必填
ToastShowMode类型,设置弹窗是否显示在应用之上。
说明:默认值:ToastShowMode.DEFAULT,默认显示在应用内。
5、alignment,非必填
Aligment类型,对齐方式。说明:默认值:undefined,默认底部偏上位置。
6、offset,非必填
Offset类型,在对齐方式上的偏移。
说明:默认值:{dx:0, dy:0},默认没有偏移。
7、backgroundColor ,非必填
ResourceColor类型,文本提示框背板颜色
说明:默认值:Color.Transparent;当设置了backgroundColor为非透明色时,backgroundBlurStyle需要设置为BlurStyle.NONE,否则颜色显示将不符合预期效果。
8、textColor ,非必填
ResourcseColor类型,文本提示框文本颜色
说明:默认值:Color.Black
9、backgroundBlurStyle,非必填
BlurStyle类型,文本提示框背板模糊材质
说明:
默认值:BlurStyle.COMPONENT_ULTRA_THICK
设置为BlurStyle.NONE即可关闭背景虚化。当设置了backgroundBlurStyle为非NONE值时,则不要设置backgroundColor,否则颜色显示将不符合预期效果。
10、shadow,非必填
ShadowOptions | ShadowStyle 类型,文本提示框背板阴影
说明:默认值:ShadowStyle.OuterDefaultMD
打开自定义弹窗。
注意:
1、暂不支持isModal = true与showInSubWindow = true同时使用。
2、弹窗宽度在设备竖屏时默认为 所在窗口宽度 - 左右margin(16vp,设备为2in1时为40vp),最大默认宽度为400vp。
使用示例:@Builder customDialogComponent() { Column() { Text('弹窗').fontSize(30) Row({ space: 50 }) { Button("取消").onClick(() => { // 关闭指定id弹窗组件 promptAction.closeCustomDialog(this.customDialogComponentId) }) Button("确认").onClick(() => { promptAction.closeCustomDialog(this.customDialogComponentId) }) } }.height(200).padding(5).justifyContent(FlexAlign.SpaceBetween) }
2、打开弹框
@Entry @Component struct PromptActionExample { private customDialogComponentId: number = 0 build() { Row() { Column() { Button('toast') .fontSize(20) .fontWeight(FontWeight.Bold) .onClick(() => { promptAction.openCustomDialog({ builder: () => this.customDialogComponent() }) .then((dialogId: number) => { // 设置当前弹窗id this.customDialogComponentId = dialogId }) }) } .width('100%') } .height('100%') } }
1 // @ohos.promptAction (弹窗) 使用示例 2 import { promptAction } from '@kit.ArkUI'; 3 4 @Entry 5 @Component 6 struct PromptActionExample { 7 private customDialogComponentId: number = 0 8 9 build() { 10 Row() { 11 Column() { 12 Button('toast') 13 .fontSize(20) 14 .fontWeight(FontWeight.Bold) 15 .onClick(() => { 16 promptAction.openCustomDialog({ 17 builder: () => this.customDialogComponent() 18 }) 19 .then((dialogId: number) => { 20 // 设置当前弹窗id 21 this.customDialogComponentId = dialogId 22 }) 23 }) 24 } 25 .width('100%') 26 } 27 .height('100%') 28 } 29 30 @Builder 31 customDialogComponent() { 32 Column() { 33 Text('弹窗').fontSize(30) 34 Row({ space: 50 }) { 35 Button("取消").onClick(() => { 36 // 关闭指定id弹窗组件 37 promptAction.closeCustomDialog(this.customDialogComponentId) 38 }) 39 Button("确认").onClick(() => { 40 promptAction.closeCustomDialog(this.customDialogComponentId) 41 }) 42 } 43 }.height(200).padding(5).justifyContent(FlexAlign.SpaceBetween) 44 } 45 }
CustomDialogOptions,自定义弹窗的内容
builder需要赋值为箭头函数,格式如下:() => { this.XXX() },其中XXX是内部builder名。
如果是全局builder需要在组件内部创建一个builder,在内部builder中调用全局builder。
builder根节点宽高百分比相对弹框容器大小。
builder非根节点宽高百分比相对父节点大小。
2、backgroundColor,非必填说明:
默认值:Color.Transparent
当设置了backgroundColor为非透明色时,backgroundBlurStyle需要设置为BlurStyle.NONE,否则颜色显示将不符合预期效果。
3、cornerRadius,非必填
Dimension|BorderRadiuses类型,设置背板的圆角半径。
说明:
可分别设置4个圆角的半径。
默认值:{ topLeft: '32vp', topRight: '32vp', bottomLeft: '32vp', bottomRight: '32vp' }。
圆角大小受组件尺寸限制,最大值为组件宽或高的一半,若值为负,则按照默认值处理。
百分比参数方式:以父元素弹窗宽和高的百分比来设置弹窗的圆角
4、borderWidth;borderColor;borderStyle说明:
- 弹窗宽度默认最大值:400vp。
- 百分比参数方式:弹窗参考宽度为所在窗口的宽度,在此基础上调小或调大。
- 弹窗高度默认最大值:0.9 *(窗口高度 - 安全区域)。
- 百分比参数方式:弹窗参考高度为(窗口高度 - 安全区域),在此基础上调小或调大。
作者:听着music睡
出处:http://www.cnblogs.com/xqxacm/
Android交流群:38197636
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。