发布时间:2026/6/26 19:00:07
鸿蒙应用开发:Stack堆叠组件实战——实现微信消息角标效果
文章目录一、引言二、Stack堆叠组件基础2.1 什么是Stack组件2.2 基本语法2.3 对齐方式三、实战实现微信消息角标3.1 效果分析3.2 完整代码实现3.3 代码解析3.4 效果展示四、进阶技巧4.1 使用position精确控制位置4.2 支持多种角标样式五、总结六、思考与练习一、引言在鸿蒙应用开发中布局是构建用户界面的基础。Stack堆叠组件是一种非常实用的布局容器它允许子组件按照顺序层叠排列后一个子组件会覆盖在前一个子组件之上。这种特性非常适合实现一些特殊的UI效果比如在应用图标上显示消息角标。本文将以实现微信来信息后在应用图标上显示数字角标为例带你掌握Stack组件的核心用法。二、Stack堆叠组件基础2.1 什么是Stack组件Stack组件是鸿蒙ArkUI框架提供的一种容器组件它采用堆叠的方式排列子组件。简单来说就是先放入的子组件在底层后放入的子组件在上层形成类似“叠罗汉”的效果。2.2 基本语法Stack({alignContent:Alignment}){// 子组件}alignContent可选参数用于设置所有子组件在容器内的对齐方式默认为Alignment.Center。2.3 对齐方式Stack组件支持多种对齐方式常用的包括对齐方式说明Alignment.TopStart顶部起始左上Alignment.TopCenter顶部居中Alignment.TopEnd顶部尾部右上Alignment.Center居中默认Alignment.BottomStart底部起始左下Alignment.BottomEnd底部尾部右下三、实战实现微信消息角标3.1 效果分析微信收到新消息时应用图标右上角会显示一个红色圆形角标里面带有未读消息数量。这个效果用Stack组件实现非常合适底层放置应用图标图片组件上层放置角标文本组件带红色背景3.2 完整代码实现EntryComponentstruct MessageBadgeDemo{// 模拟未读消息数量StateunreadCount:number5build(){Column(){// 堆叠容器图标 角标Stack({alignContent:Alignment.TopEnd}){// 底层应用图标Image($r(app.media.startIcon)).width(80).height(80).borderRadius(16)// 上层消息角标if(this.unreadCount0){Text(this.unreadCount99?99:this.unreadCount.toString()).fontSize(12).fontColor(Color.White).backgroundColor(Color.Red).borderRadius(10).width(20).height(20).textAlign(TextAlign.Center).position({x:60,y:-5})// 微调角标位置}}.width(80).height(80)// 显示未读数量控制按钮Row({space:30}){Button(1).onClick((){this.unreadCount}).width(30%)Button(清零).onClick((){this.unreadCount0}).width(30%)}.margin({top:20})}.width(100%).height(100%).justifyContent(FlexAlign.Center)}}3.3 代码解析Stack({ alignContent: Alignment.TopEnd })设置堆叠容器为顶端尾部对齐这样角标就会出现在图标的右上角。底层图片使用Image组件加载应用图标并设置宽高和圆角。上层角标使用Text组件显示未读数量通过backgroundColor(Color.Red)设置红色背景borderRadius(10)实现圆形效果。条件渲染通过if (this.unreadCount 0)控制当未读数为0时隐藏角标。数量上限处理当未读数超过99时显示99避免角标显示不下。3.4 效果展示运行上述代码你会看到应用图标右上角显示红色圆形角标里面显示数字5点击1按钮角标数字递增点击清零按钮角标消失四、进阶技巧4.1 使用position精确控制位置除了通过alignContent控制整体对齐还可以使用position属性对单个子组件进行微调Text(3).position({x:55,y:-8})// 相对于父容器左上角的偏移4.2 支持多种角标样式// 红点模式仅提示不显示数字Circle().width(10).height(10).fill(Color.Red).position({x:65,y:-3})// 带边框的角标Text(新消息).fontSize(10).fontColor(Color.White).backgroundColor(Color.Red).border({width:1,color:Color.White}).borderRadius(8).padding({left:6,right:6,top:2,bottom:2})五、总结通过本文的实战我们学习了Stack堆叠组件的基本用法和对齐方式如何利用Stack实现应用图标消息角标效果条件渲染和数量上限处理技巧进阶的样式定制方法Stack组件在鸿蒙开发中应用广泛除了角标效果还可以用于实现悬浮按钮、遮罩层、卡片叠加等场景。掌握好这个组件能让你的UI开发更加得心应手。六、思考与练习尝试实现一个带“红点”和“数字”两种模式的角标组件如何让角标支持动画效果如缩放出现思考Stack和Flex布局在什么场景下配合使用效果更好

相关新闻

3分钟终极指南:免费解锁VMware的macOS隐藏功能
2026/6/26 19:00:07

3分钟终极指南:免费解锁VMware的macOS隐藏功能

3分钟终极指南:免费解锁VMware的macOS隐藏功能 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 你是否曾梦想在普通电脑上体验苹果的macOS系统?是否因为昂贵的苹果硬件而放弃了iO…

阅读更多
【异常】执行脚本提示 `uvx` 命令未找到的原因与解决方案
2026/6/26 19:00:07

【异常】执行脚本提示 `uvx` 命令未找到的原因与解决方案

执行脚本提示 uvx 命令未找到的原因与解决方案 在运行 Python 自动化脚本(如模型批量下载、分布式文件分发类脚本)的过程中,常会遇到工具依赖缺失导致的执行中断。本文针对 uvx 命令不存在的典型报错,梳理问题成因并提供可落地的解决方案。 一、报错内容 执行脚本时,终…

阅读更多
3分钟掌握网盘直链下载助手:彻底解决下载速度瓶颈的专业方案
2026/6/26 19:00:07

3分钟掌握网盘直链下载助手:彻底解决下载速度瓶颈的专业方案

3分钟掌握网盘直链下载助手:彻底解决下载速度瓶颈的专业方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …

阅读更多
AlienFX Tools终极指南:如何完全掌控你的Alienware灯光系统
2026/6/26 20:00:07

AlienFX Tools终极指南:如何完全掌控你的Alienware灯光系统

AlienFX Tools终极指南:如何完全掌控你的Alienware灯光系统 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否厌倦了AWCC(A…

阅读更多
次梯度下降优化:分层选择与几何控制加速非光滑问题求解
2026/6/26 20:00:07

次梯度下降优化:分层选择与几何控制加速非光滑问题求解

1. 项目概述:从“能用”到“好用”的优化哲学在机器学习和优化算法的世界里,我们常常满足于找到一个能“跑通”的模型。一个损失函数开始下降,我们就觉得大功告成。但真正深入到工业级应用或者对性能有极致要求的场景时,你会发现&…

阅读更多
AlienFX Tools完全指南:从灯光失控到精准控制的进阶解决方案
2026/6/26 20:00:07

AlienFX Tools完全指南:从灯光失控到精准控制的进阶解决方案

AlienFX Tools完全指南:从灯光失控到精准控制的进阶解决方案 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools AlienFX Tools是一个强大的开源…

阅读更多
天啊!deepseek做的表格怎么导出?我用“AI导出鸭”测了4种方法,结果太震惊了!
2026/6/26 20:00:07

天啊!deepseek做的表格怎么导出?我用“AI导出鸭”测了4种方法,结果太震惊了!

你知道那种感觉吗?花了一晚上用DeepSeek生成了一份完美的Q2销售数据表——有同比环比、有可视化进度条、甚至还有Excel里才能跑的公式。然后你CtrlC了。CtrlV到Excel里。全疯了。|——|——|——|直接变成一坨屎。领导在钉钉炸了:“数据呢?”…

阅读更多
终极KMS智能激活脚本:5分钟搞定Windows和Office免费激活
2026/6/26 20:00:07

终极KMS智能激活脚本:5分钟搞定Windows和Office免费激活

终极KMS智能激活脚本:5分钟搞定Windows和Office免费激活 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活弹窗烦恼吗?想要免费、安全地激活Windows和…

阅读更多
2026企业级商城系统开发服务商推荐:云创商城全场景解决方案测评
2026/6/26 19:00:07

2026企业级商城系统开发服务商推荐:云创商城全场景解决方案测评

在数字化转型进入“深水区”的2026年,企业对于商城系统的需求早已超越了“简单卖货”的范畴。单纯的模板化建站已成过去式,全场景、全渠道、可定制的数字化解决方案正在成为行业刚需。面对市场上众多的商城系统开发服务商,企业如何选择才能避…

阅读更多
嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南
2026/6/25 12:25:54

嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南

1. 项目概述与G.726 ADPCM技术背景在嵌入式语音处理领域,带宽和存储资源往往是寸土寸金的。如果你做过对讲机、VoIP网关或者早期的数字录音设备,一定对如何在有限的比特率下保住语音可懂度这件事深有感触。我当年接手一个车载调度系统的项目,…

阅读更多
ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性
2026/6/25 22:07:52

ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性

1. 项目概述与核心挑战在数字视频处理领域,将原始的视频数据、同步时序以及各种辅助信息打包成一个标准、稳定的串行数据流,是确保设备间互联互通的基础。ITU-R BT.656标准(常简称为ITU656)正是为此而生的一套“交通规则”。它定义…

阅读更多
嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南
2026/6/25 20:03:50

嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南

1. 项目概述与emWin核心价值解析在嵌入式系统开发领域,人机交互(HMI)的设计正从简单的LED指示灯和按键,快速向全彩图形化界面演进。无论是智能家电上的触摸屏、工业PLC的操作面板,还是医疗设备的参数显示,一…

阅读更多
计算机毕业设计之基于Java的流浪动物收养系统设计与开发
2026/6/26 0:00:04

计算机毕业设计之基于Java的流浪动物收养系统设计与开发

时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,流浪动物收养系统当然不能排除在外。流浪动物收养系统是在实际应用和软件工程的开发原理之上,运用java语言以及SSM框架进行开发。首先…

阅读更多
技术线上面试代码写完就以为通关?留学生利用黑盒测试自证风控「蒸汽教育分享」
2026/6/26 0:00:04

技术线上面试代码写完就以为通关?留学生利用黑盒测试自证风控「蒸汽教育分享」

在线上白板编程(Coding)或算法实战轮次中,不少代码基本功扎实的技术新人,在跑通了题目主干逻辑的第一时间,会习惯性地向评委表示“我写完了”。这在极其注重系统稳定性的研发总监和资深架构师眼里,往往暴露…

阅读更多
暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程
2026/6/26 0:00:04

暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程

暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否厌倦了在暗黑破坏神2中反复刷装备的枯燥过程?是否想快速测试不同的职业build却不想花…

阅读更多
GIT修改用户名
2026/6/26 3:53:45

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/26 13:36:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/26 13:36:41

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多