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/11/9 17:28:20 阅读更多 →
Angular父子组件交互:核心场景与最佳实践

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

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

2026/10/29 1:23:36 阅读更多 →
Unity动画系统Mecanim深度解析:从核心架构到性能优化实战

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

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

2026/11/12 15:32:07 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻