HarmonyOS 鸿蒙Next TimePickerDialog时间滑动选择器弹窗如何实现自定义的时间间隔 包括时间间隔的定义 用户界面的调整以及可能的验证逻辑等

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next TimePickerDialog时间滑动选择器弹窗如何实现自定义的时间间隔 包括时间间隔的定义 用户界面的调整以及可能的验证逻辑等 描述:在某些应用中,需要设置自定义的时间间隔供用户选择。如何在ArkUI中实现TimePickerDialog的自定义时间间隔功能,包括时间间隔的定义、用户界面的调整以及可能的验证逻辑等。

2 回复

自定义时间间隔可以参考下边这个demo

let anmDuration: number = 200;
@Entry
@Component
struct TextPickerExample1 {
  @State firstDate: string = '2024-06-19'
  @State date: string = '2024年06月19号'
  controller: CustomDialogController = new CustomDialogController({
    builder: TextPicker1({
      cancel: (date: string) => {
        this.onCancel(date)
      },
      confirm: (date: string, date1: Date) => {
        this.onAccept(date, date1)
      },
      date: this.firstDate,
    }),
    autoCancel:false,
    cornerRadius: 0,
    customStyle: true,
    alignment: DialogAlignment.BottomEnd
  })

  onCancel(date: string) {

  }

  onAccept(date: string, date1: Date) {
    let year: string = date1.getFullYear().toString();
    let month: string = (date1.getMonth() + 1) < 10 ? ('0' + (date1.getMonth() + 1)).toString() : (date1.getMonth() + 1).toString();
    let day: string = date1.getDate().toString();
    this.date = year + '年' + month + '月' + day + '日'
    this.firstDate = year + '-' + month + '-' + day + '-'
  }

  build() {
    Column() {
      Text(this.date)
      Text('日期').onClick(() => {
        this.controller.open()
      })
    }
  }
}

@CustomDialog
struct TextPicker1 {
  aboutToAppear(): void {
    this.selectedDate = new Date(this.date)
  }

  @State date: string = '2026-08-08'
  controller: CustomDialogController
  //起始年份
  @State startYear: number = 1970
  @State isLunar: boolean = false
  @State showFlag: Visibility = Visibility.Visible;
  @State isAutoCancel: boolean = false;
  @State selectedDate: Date = new Date(this.date)
  cancel?: (date: string) => void
  confirm?: (date: string, date1: Date) => void
  // 延迟关闭弹窗,让自定义的出场动画显示

  @State nowDate: Date = new Date()

  destroy() {
    this.showFlag = Visibility.Hidden
    setTimeout(() => {
      this.controller.close()
    }, anmDuration)
  }

  build() {
    Column() {
      Column() {
        Row() {
          Button('取消', { type: ButtonType.Normal }).backgroundColor(Color.White).fontColor(Color.Gray)
            .onClick(() => {
              if (this.cancel) {
                this.destroy();
                this.cancel(this.date)
              }
            })
          Button('确定', { type: ButtonType.Normal }).backgroundColor(Color.White).fontColor("#fff5b6dd")
            .onClick(() => {
              if (this.confirm) {
                this.destroy();
                this.date = this.nowDate.toString()
                this.confirm(this.date, this.nowDate)
              }
            })
        }.width('100%').justifyContent(FlexAlign.SpaceBetween)

        DatePicker({
          start: new Date('1970-1-1'),
          end: new Date('2100-1-1'),
          selected: this.selectedDate
        })
          .disappearTextStyle({ color: Color.Gray, font: { size: '16fp', weight: FontWeight.Bold } })
          .textStyle({ color: '#ff182431', font: { size: '16', weight: FontWeight.Normal } })
          .selectedTextStyle({ color: "#fff5b6dd", font: { size: '22fp', weight: FontWeight.Regular } })
          .lunar(this.isLunar)
          .onDateChange((value: Date) => {
            this.nowDate = value
            console.info('select current date is: ' + value.toString())
          })
      }
    }.width('100%').backgroundColor(Color.White).visibility(this.showFlag)
    // 定义进场出场转场动画效果
    .transition(TransitionEffect.OPACITY.animation({ duration: anmDuration })
      .combine(TransitionEffect.translate({ y: 100 })))
  }
}

更多关于HarmonyOS 鸿蒙Next TimePickerDialog时间滑动选择器弹窗如何实现自定义的时间间隔 包括时间间隔的定义 用户界面的调整以及可能的验证逻辑等的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中实现自定义时间间隔的TimePickerDialog时间滑动选择器弹窗,可以通过以下步骤进行:

  1. 时间间隔的定义: 在创建TimePickerDialog之前,你需要定义一个自定义的时间间隔。这可以通过设置分钟和秒的增量来实现。例如,如果你希望时间间隔为5分钟,你可以在设置时间选择器时,通过循环或条件判断来限制用户只能选择5的倍数分钟数。

  2. 用户界面的调整: 使用HarmonyOS提供的UI组件库,你可以自定义TimePickerDialog的布局。通过XML布局文件或代码动态创建,调整时间选择器的外观,如字体大小、颜色、背景等。

  3. 验证逻辑: 在用户选择时间后,你需要添加验证逻辑以确保所选时间符合自定义的时间间隔。这可以在用户点击确认按钮时触发,通过检查所选分钟数是否是自定义间隔的倍数来实现。如果不是,可以提示用户重新选择。

实现上述功能时,可能需要深入了解HarmonyOS的UI框架和时间选择器组件的API。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部