CalendarYearPage 年视图:12 个月微型日历网格
前言“海风日记“的年视图页面展示了全年的日历概览使用 Grid 3 列布局展示 12 个月微型日历每个微型日历包含月份标题、星期行和日期网格。本文将从CalendarYearPage.ets源码出发深入讲解年视图的实现。一、年视图布局1.1 整体结构Scroll() { Grid() { ForEach(this.createIndexArray(12), (monthIndex: number) { GridItem() { this.miniCalendar(monthIndex) // 12 个微型日历 } }) } .columnsTemplate(1fr 1fr 1fr) // 3 列 .columnsGap(10).rowsGap(10) }1.2 微型日历构建器Builder miniCalendar(monthIndex: number) { Column({ space: 4 }) { // 月份标题 Text(this.months[monthIndex]) .fontSize(13).fontColor(COLOR_TEXT_MAIN).fontWeight(FontWeight.Bold) // 星期行 Row() { ForEach([日,一,二,三,四,五,六], (d: string) { Text(d).fontSize(8).fontColor(COLOR_TEXT_HINT) }) } // 日期网格 Grid() { // 空白偏移 ForEach(this.createIndexArray(new Date(monthIndex).getDay()), (i) { GridItem() { Column().width(100%).height(18) } }) // 日期 ForEach(this.createDayArray(new Date(monthIndex 1, 0).getDate()), (day) { GridItem() { Stack() { if (isToday) { Circle().width(18).height(18).fill(COLOR_PRIMARY) } Text(day.toString()).fontSize(9) } } }) } .columnsTemplate(1fr 1fr 1fr 1fr 1fr 1fr 1fr) } .padding(10).backgroundColor(COLOR_CARD_BG) .borderRadius(CARD_RADIUS) .shadow({ radius: 8, color: rgba(160,120,60,0.08), offsetY: 2 }) }二、微型日历的尺寸元素尺寸说明月份标题13vp加粗星期文字8vp极小字号日期数字9vp小字号行高18vp紧凑今日圆点18vp橙色三、年份导航Row({ space: 4 }) { Button() { SymbolGlyph($r(sys.symbol.chevron_left)).fontSize(16).fontColor([COLOR_AMBER]) } .onClick(() { this.curYear - 1 }) Button() { SymbolGlyph($r(sys.symbol.chevron_right)).fontSize(16).fontColor([COLOR_AMBER]) } .onClick(() { this.curYear 1 }) }四、常见问题4.1 微型日历显示不全问题微型日历中的日期数字显示不全。原因Grid 单元格太小无法容纳所有日期。解决方案减小字号9vp和行高18vp。总结本文通过“海风日记“的年视图深入讲解了微型日历网格的实现3 列 Grid12 个月按 3×4 排列微型日历 Builder月份标题 星期行 日期网格紧凑布局小字号、短线高年份导航左右箭头切换年份下一篇文章将深入讲解年统计与最长连续天数敬请期待。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Grid 组件文档Builder 装饰器文档Shadow 属性文档海风日记项目源码[HarmonyOS 开发者官网](https://atomgit.com/openharmony/docs开源鸿蒙跨平台社区

相关新闻

Apriori关联规则实战:从购物车挖掘可落地的商业逻辑

Apriori关联规则实战:从购物车挖掘可落地的商业逻辑

1. 这不是“找关系”,而是从购物车里挖出隐藏的商业逻辑你有没有想过,为什么超市总把啤酒和尿布摆在一起?为什么电商首页刚给你推荐了婴儿奶粉,下一秒就弹出纸尿裤满减券?这些看似随意的组合,背后其实是一套…

2026/7/19 1:09:12 阅读更多 →
Angular父子组件交互:核心场景与最佳实践

Angular父子组件交互:核心场景与最佳实践

1. Angular父子组件交互的核心场景与价值在Angular应用开发中,父子组件交互是最基础也最频繁使用的功能模式。想象一下你正在构建一个电商网站的商品详情页:父组件负责整体布局和商品主信息展示,而子组件可能负责用户评论区域、规格选择器或购…

2026/7/19 1:09:12 阅读更多 →
Unity动画系统Mecanim深度解析:从核心架构到性能优化实战

Unity动画系统Mecanim深度解析:从核心架构到性能优化实战

1. 项目概述:从“黑屏无响应”到流畅动画,一个Unity程序员的系统认知重塑最近在社区里看到不少朋友在问Unity程序打开黑屏无响应、动画导入后角色抽搐、状态机逻辑混乱之类的问题。作为一个从Unity 4.x时代一路踩坑过来的老鸟,我深切地感受到…

2026/7/19 1:09:12 阅读更多 →

最新新闻

Android自定义View实现精美模拟时钟开发指南

Android自定义View实现精美模拟时钟开发指南

1. 项目概述在Android应用开发中,模拟时钟是一个经典且实用的UI组件。不同于简单的数字时钟,模拟时钟通过时针、分针和秒针的旋转来直观展示时间变化,能够为应用增添优雅的视觉体验。本文将详细介绍如何在Android应用中实现一个既简单又美观的…

2026/7/19 2:37:43 阅读更多 →
嵌入式引脚复用配置详解:从寄存器原理到OMAP4460实战

嵌入式引脚复用配置详解:从寄存器原理到OMAP4460实战

1. 项目概述:从物理引脚到功能接口的桥梁在嵌入式系统开发,尤其是基于复杂应用处理器(AP)的设计中,我们常常会面对一个看似矛盾的需求:芯片的物理引脚数量是有限的,但系统需要连接的外设&#x…

2026/7/19 2:37:43 阅读更多 →
1000份免费简历模板:如何选对模板并通过ATS筛选

1000份免费简历模板:如何选对模板并通过ATS筛选

你有没有过这样的经历:深夜改简历,对着网上那些要么收费、要么水印遮掉关键信息的模板,恨不得自己从头画表格?或者下载了一堆号称“免费”的模板,解压后发现要么格式错乱,要么设计过时,真正能用…

2026/7/19 2:37:43 阅读更多 →
大模型调用脱敏接口时,如何保证查询实体的一致性

大模型调用脱敏接口时,如何保证查询实体的一致性

在大模型与业务系统结合的场景中,一种越来越常见的处理流程是这样的,用户用自然语言提出问题,大模型负责理解用户的意图,识别出关键实体和查询目标,然后调用第三方业务接口获取数据,最后将接口返回的结果组…

2026/7/19 2:37:43 阅读更多 →
网络热词L347的传播机制与社会语言学分析

网络热词L347的传播机制与社会语言学分析

1. "L347"现象解析:网络热词的传播与解码最近在各种社交平台上频繁出现的"L347"代码组合,已经悄然成为年轻人交流中的新宠。这个看似随机的字母数字组合,实际上承载着特定群体间的默契与亚文化认同。我第一次注意到这个现…

2026/7/19 2:37:43 阅读更多 →
TI CC1150 Sub-1 GHz射频发射芯片:从寄存器配置到PCB布局的实战指南

TI CC1150 Sub-1 GHz射频发射芯片:从寄存器配置到PCB布局的实战指南

1. 项目概述与核心价值在物联网、智能家居和工业监控这些领域,无线通信的可靠性和功耗是工程师们最头疼的两个问题。Sub-1 GHz频段(如315MHz、433MHz、868MHz、915MHz)的射频技术,凭借其出色的绕射能力和穿透性,成为了…

2026/7/19 2:36:43 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻