鸿蒙HarmonyOS开发生日选择弹框

ops/2024/11/9 9:38:11/
鸿蒙HarmonyOS开发生日选择弹框

生日选择弹框和城市选择弹框差不多,都是通过观察上一个数据变化来设置自己的数据

一、思路:

一个弹框上建三个compoent,一个年,一个月,一个日。日的数据是根据年和月进行变化的

二、效果图:

在这里插入图片描述

三、视频效果:

鸿蒙Next开发教程实战案例源码分享-生日选择弹框

四、关键源码如下:
// 联系:893151960
@Component
export struct FirstLevelComponent {@State labelList: string[] = [];@Consume selectFirstIndex: number;@Consume currentFirst: string;@Consume dataSource: string[];aboutToAppear() {for (let i = 0; i < this.dataSource.length; i++) {this.labelList.push(this.dataSource[i])if (this.dataSource[i] === this.currentFirst) {this.selectFirstIndex = i;}}this.currentFirst = this.dataSource[this.selectFirstIndex]}build() {Column() {Column() {if (this.labelList.length === 0) {Text('暂无数据').fontSize(20)} else {TextPicker({ range: this.labelList, selected: this.selectFirstIndex }).onChange((value: string|string[], index: number|number[]) => {if (typeof index === 'number') {this.selectFirstIndex = indexthis.currentFirst = this.dataSource[index]}}).selectedTextStyle({color:$r('app.color.color_main')}).canLoop(false)}}.backgroundColor(Color.White).border({ color: '#e2e2e2', width: { right: 0.5 }}).width('100%').layoutWeight(1).justifyContent(FlexAlign.Center)}.height('100%')}
}
/*** @author :congge* @date : 2024-01-24 11:45* @desc : 生日选择专用弹框**/
@CustomDialog
export default struct BirthdayPickerDialog {@Provide currentFirst: string = '';@Provide currentSecond: string = '';@Provide currentThree: string = '';@Provide selectFirstIndex: number = 0;//注意; 这位置很可能和数组的位置对不上的,因为它的起点是以为左边选中开始的@Provide selectSecondIndex: number = 0;controller: CustomDialogControllertitle: string = '选择生日' //弹窗的提示文本@Provide dataSource: string[] = CommonConstants.YEAR@Provide secondOnlyDataSource: string[] = CommonConstants.MONTHresultCallback?:(arg0:string,arg1:string,arg2:string) => voidaboutToAppear() {this.currentFirst = this.dataSource[0];this.currentSecond = this.secondOnlyDataSource[0];}build() {Column() {Text(this.title).fontSize(20).textAlign(TextAlign.Center).margin({ top: 10, bottom: 10 });Row() {FirstLevelComponent().width('33%');// 手动给线Divider().vertical(true).color($r('app.color.color_e2')).width(0.5)SecondOnlyLevelComponent().width('33%');Divider().vertical(true).color($r('app.color.color_e2')).width(0.5)DayLevelComponent().width('33%');}.height('40%')Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) {Button($r('app.string.cancel'), { type: ButtonType.Normal }).onClick(() => {this.controller?.close()}).backgroundColor(0xffffff).fontColor(Color.Black).layoutWeight(1).height('100%')Divider().vertical(true).strokeWidth(1).color('#F1F3F5').opacity(1).height('100%')Button($r('app.string.sure'), { type: ButtonType.Normal }).onClick(() => {this.controller?.close()this.resultCallback?.(this.currentFirst,this.currentSecond,this.currentThree)}).backgroundColor(0xffffff).fontColor($r('app.color.color_main')).layoutWeight(1).height('100%')}.height(50)}}
}
五、完整项目demo结构图:

在这里插入图片描述有需要完整源码demo可私信我


http://www.ppmy.cn/ops/131893.html

相关文章

主观Bayes方法

1. 不确定性的表示 1️⃣知识的不确定性&#xff1a;IF E THEN (LS,LN) H(P(H)) P ( H ) P(H) P(H)&#xff1a;结论 H H H的先验概率&#xff0c;由专家根据经验给出静态强度 L S , L N LS,LN LS,LN&#xff1a;由专家给出&#xff0c;这两个表达式不用记 L S P ( E ∣ H ) P…

Docker 基础命令简介

目录 Docker 基础命令 1. Docker 版本信息 2. 获取 Docker 帮助 3. 列出所有运行中的容器 4. 运行一个新的容器 5. 查看容器日志 6. 停止容器 7. 启动已停止的容器 8. 删除容器 9. 列出所有镜像 10. 拉取镜像 11. 构建镜像 12. 删除镜像 13. 执行命令 14. 查看容…

Git通讲-第二章(1):快照和不可变对象模型

前言 上一篇文章主要介绍些Git起源背后的一些故事背景&#xff0c;从这篇开始将逐渐讲解Git的设计理念&#xff0c;包括分布式控制、快照管理、不可变对象模型和分支模型。其实上述概念都不是孤立的&#xff0c;在讲解中会发现它们是相辅相成的有机整体&#xff0c;实现11大于…

TCP/IP与HTTP协议:概念、关系与工作原理

一、引言 在计算机网络领域&#xff0c;TCP/IP和HTTP协议是至关重要的基础概念。它们在数据传输、网络通信以及互联网应用中发挥着关键作用。理解这些协议的概念、区别以及它们的工作原理&#xff0c;对于深入掌握网络技术和开发网络应用程序具有重要意义。 二、TCP/IP协议 …

React 守卫路由

1.在components文件夹下新建一个Auth.js的文件&#xff0c;里面写入判断token的逻辑&#xff1a; // 导入重定向的路由模块 import { Navigate } from "react-router-dom" // 获取本地token let token window.sessionStorage.getItem(token) function Auth({childr…

设计模式讲解01-建造者模式(Builder)

1. 概述 建造者模式也称为&#xff1a;生成器模式 定义&#xff1a;建造者模式是一种创建型设计模式&#xff0c;它允许你将创建复杂对象的步骤与表示方式相分离。 解释&#xff1a;建造者模式就是将复杂对象的创建过程拆分成多个简单对象的创建过程&#xff0c;并将这些简单…

实践出真知:MVEL表达式中for循环的坑

目录标题 背景MVEL脚本(有问题的)MVEL脚本(正确的)结论分析 背景 需要从一个URL的拼接参数中解析出id的值并输出 比如&#xff1a; 存在URLhttps://xxxxxxxxxx?id999999&type123&name345 然后需要输出id999999 MVEL脚本(有问题的) 入参&#xff1a;parseThisUrlhttp…

数字信号处理Python示例(8)使用复数指数函数生成正弦函数和余弦函数

文章目录 前言一、相量叠加原理二、使用旋转相量生成余弦和正弦波的Python代码三、仿真结果及分析写在后面的话 前言 首先给出使用复数指数函数生成正弦函数和余弦函数的数学表达式&#xff0c;然后给出Python仿真代码&#xff0c;并绘制了生成的函数图形&#xff0c;最后给出…