您的位置:首页 > 房产 > 建筑 > 杭州网站开发 网站建设_泰安网签备案查询_推广找客户平台_宁波seo搜索引擎优化

杭州网站开发 网站建设_泰安网签备案查询_推广找客户平台_宁波seo搜索引擎优化

2025/2/26 8:06:03 来源:https://blog.csdn.net/harmonyClassRoom/article/details/145682686  浏览:    关键词:杭州网站开发 网站建设_泰安网签备案查询_推广找客户平台_宁波seo搜索引擎优化
杭州网站开发 网站建设_泰安网签备案查询_推广找客户平台_宁波seo搜索引擎优化

1、概 述

在我们项目开发过程中,时常会遇到时间选择器的场景(如下图),ArkUI为我们提供了一套时间选择对话框,本文针对时间选择对话框的使用做简单介绍。

图片

2、接口说明

我们可根据24小时的时间区间,创建时间滑动选择器弹窗,将时间信息清晰地展示在弹出的窗口上。

时间滑动选择器弹窗通过UIContext中的showTimePickerDialog接口实现,showTimePickerDialog接口定义如下:

showTimePickerDialog(options: TimePickerDialogOptions): void

其中TimePickerDialogOptions是入参选项,可以支持的属性罗列如下:

名称

类型

说明

selected

Date

设置选中项的时间。默认值:当前系统时间从API version 10开始,该参数支持$$双向绑定变量。

format

TimePickerFormat

指定需要显示的TimePicker的格式。默认值:TimePickerFormat.HOUR_MINUTE

useMilitaryTime

boolean

展示时间是否为24小时制,默认为12小时制。默认值:false

说明: 当展示时间为12小时制时,上下午与小时无联动关系。

disappearTextStyle

PickerTextStyle

设置所有选项中最上和最下两个选项的文本颜色、字号、字体粗细。默认值:{color: '#ff182431',font: {size: '14fp',weight: FontWeight.Regular}}

textStyle

PickerTextStyle

设置所有选项中除了最上、最下及选中项以外的文本颜色、字号、字体粗细。默认值:{color: '#ff182431',font: {size: '16fp',weight: FontWeight.Regular}}

selectedTextStyle

PickerTextStyle

设置选中项的文本颜色、字号、字体粗细。默认值:{color: '#ff007dff',font: {size: '20vp',weight: FontWeight.Medium}}

acceptButtonStyle

PickerDialogButtonStyle

设置确认按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。

说明:acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,二者primary字段均配置为true时均不生效。

cancelButtonStyle

PickerDialogButtonStyle

设置取消按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。

说明:acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,二者primary字段均配置为true时均不生效。

alignment

DialogAlignment

弹窗在竖直方向上的对齐方式。默认值:DialogAlignment.Default

offset

Offset

弹窗相对alignment所在位置的偏移量。默认值:{ dx: 0 , dy: 0 }

maskRect

Rectangle

弹窗遮蔽层区域,在遮蔽层区域内的事件不透传,在遮蔽层区域外的事件透传。默认值:{ x: 0, y: 0, width: '100%', height: '100%' }

onAccept

(value: TimePickerResult) => void

点击弹窗中的“确定”按钮时触发该回调。

onCancel

() => void

点击弹窗中的“取消”按钮时触发该回调。

onChange

(value: TimePickerResult) => void

滑动弹窗中的选择器使当前选中时间改变时触发该回调。

backgroundColor

ResourceColor

弹窗背板颜色。默认值:Color.Transparent

说明:当设置了backgroundColor为非透明色时,backgroundBlurStyle需要设置为BlurStyle.NONE,否则颜色显示将不符合预期效果。

backgroundBlurStyle

BlurStyle

弹窗背板模糊材质。默认值:BlurStyle.COMPONENT_ULTRA_THICK

说明:设置为BlurStyle.NONE即可关闭背景虚化。当设置了backgroundBlurStyle为非NONE值时,则不要设置backgroundColor,否则颜色显示将不符合预期效果。

onDidAppear

() => void

弹窗弹出时的事件回调。

说明:1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。2.在onDidAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。3.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。4. 当弹窗入场动效未完成时关闭弹窗,该回调不会触发。

onDidDisappear

() => void

弹窗消失时的事件回调。

说明:1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。

onWillAppear

() => void

弹窗显示动效前的事件回调。

说明:1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。2.在onWillAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。

onWillDisappear

() => void

弹窗退出动效前的事件回调。

说明:1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。2.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。

shadow

ShadowOptions | ShadowStyle

设置弹窗背板的阴影。当设备为2in1时,默认场景下获焦阴影值为ShadowStyle.OUTER_FLOATING_MD,失焦为ShadowStyle.OUTER_FLOATING_SM

dateTimeOptions

DateTimeOptions

设置时分是否显示前置0,目前只支持设置hour和minute参数。默认值:hour: 24小时制默认为"2-digit",即有前置0;12小时制默认为"numeric",即没有前置0。minute: 默认为"2-digit",即有前置0。

3、案 例

👉🏻 案例1:通过自定义配置disappearTextStyle、textStyle、selectedTextStyle、acceptButtonStyle、cancelButtonStyle实现自定义文本以及按钮样式,效果如下:

图片

代码如下(30 ~ 51行):

const acceptButtonStyle: PickerDialogButtonStyle = {  fontColor: '#2787d9',  fontSize: '16fp',  backgroundColor: '#f7f7f7',  borderRadius: 10}const selectedTextStyle: PickerTextStyle = { color: '#004aaf', font: { size: '18fp', weight: FontWeight.Regular } };const cancelButtonStyle: PickerDialogButtonStyle = {  fontColor: Color.Red,  fontSize: '16fp',  backgroundColor: '#f7f7f7',  borderRadius: 10}const textStyle: PickerTextStyle = { color: '#2787d9', font: { size: '14fp', weight: FontWeight.Normal } }class SelectTime{  selectTime: Date = new Date('2020-12-25T08:30:00')  hours(h:number,m:number){    this.selectTime.setHours(h,m)  }}@Entry@Componentstruct TimePickerDialogExample {  @State selectTime: Date = new Date('2023-12-25T08:30:00');  build() {    Column() {      Button('显示时间选择器对话框')        .margin(30)        .onClick(() => {          this.getUIContext().showTimePickerDialog({            selected: this.selectTime,            textStyle,            selectedTextStyle,            acceptButtonStyle,            cancelButtonStyle,            onAccept: (value: TimePickerResult) => {              // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间              let time = new SelectTime();              if(value.hour&&value.minute){                time.hours(value.hour, value.minute)              }              console.info("TimePickerDialog:onAccept()" + JSON.stringify(value))            },            onCancel: () => {              console.info("TimePickerDialog:onCancel()")            },            onChange: (value: TimePickerResult) => {              console.info("TimePickerDialog:onChange()" + JSON.stringify(value))            }          })        })    }.width('100%').margin({ top: 5 })  }}

👉🏻 案例 2:24小时制显示(没有上午/下午的切换),显示效果如下:

图片

代码如下:​​​​​​​

@Entry@Componentstruct TimePickerDialogExample {  @State selectTime: Date = new Date('2023-12-25T08:30:00');  build() {    Column() {      Button("时间弹窗 24小时制")        .margin(20)        .onClick(() => {          TimePickerDialog.show({            selected: this.selectTime,            useMilitaryTime: true,            onAccept: (value: TimePickerResult) => {              if (value.hour != undefined && value.minute != undefined) {                this.selectTime.setHours(value.hour, value.minute)                console.info("TimePickerDialog:onAccept()" + JSON.stringify(value))              }            },            onCancel: () => {              console.info("TimePickerDialog:onCancel()")            },            onChange: (value: TimePickerResult) => {              console.info("TimePickerDialog:onChange()" + JSON.stringify(value))            },            onDidAppear: () => {              console.info("TimePickerDialog:onDidAppear()")            },            onDidDisappear: () => {              console.info("TimePickerDialog:onDidDisappear()")            },            onWillAppear: () => {              console.info("TimePickerDialog:onWillAppear()")            },            onWillDisappear: () => {              console.info("TimePickerDialog:onWillDisappear()")            }          })        })    }.width('100%').margin({ top: 5 })  }}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com