鸿蒙ArkTS | Badge 信息标记组件自学指南

article/2025/8/4 18:33:15

在做 UI 设计时,我们经常会碰到这样一个需求:要在某个图标、按钮或列表项的角落加一个小小的提示,比如红点、新消息数量、状态标签之类的。这时候就轮到 ​​Badge​​ 组件登场了。

如果你想要一个简单优雅、可配置灵活的信息标记功能,​​Badge​​ 就是官方给你的标准答案。


组件简介:Badge 是干什么的?

​Badge​​ 是一个「信息标记容器组件」,可以附加在你指定的任何子组件上,用来做提示提醒,比如:

  • 红点
  • 数字(1~99+)
  • 文本(“New”、“Hot”)

而且它支持位置设置、样式自定义,还能根据不同的数据类型进行不同展示,非常适合做复杂场景下的状态提示。


基本用法:数字、文本、红点分别怎么玩?

我们直接看代码,分三个小案例逐一拆解。


示例一:红点提示(不显示内容,只显示圆点)

Badge({value: '',style: {badgeSize: 6, // 圆点直径badgeColor: '#FA2A2D' // 红点颜色}
}) {Image('/common/public_icon_off.svg').width(24).height(24)
}

在这里插入图片描述

这种场景适合用在有无状态表示,比如有没有新消息、开关状态变更等场合。


示例二:文字提示(显示"New")

Badge({value: 'New',position: BadgePosition.Right,style: {badgeSize: 16,badgeColor: '#FA2A2D'}
}) {Text('列表项').fontSize(14).fontColor('#182431')
}

在这里插入图片描述

这个就更适合做文字标签,比如「NEW」「HOT」「升级」「试用」等场景,跟着组件一起展示。


示例三:数字提示(显示数量)

Badge({count: 88,maxCount: 99,position: BadgePosition.Right,style: {badgeSize: 16,badgeColor: '#FA2A2D'}
}) {Image('common/public_icon.svg').width(32).height(32)
}

在这里插入图片描述

当 ​​count​​​ 超过 ​​maxCount​​​ 后,会自动变成 ​​99+​​,这种设计非常适合社交消息、系统通知等消息类提醒。


核心参数快速解释

参数名用途示例
​value​传入字符串作为内容​'New'​
​count​传入数字作为提醒数量​88​
​maxCount​显示上限,超过显示“+”​99​
​position​标记的位置​BadgePosition.RightTop​
​style​样式对象,详见下表​{ badgeSize: 16, badgeColor: '#FA2A2D' }​

style 对象支持的字段:

  • ​badgeSize​​​: 标记直径(如 ​​16vp​​)
  • ​badgeColor​​: 背景色
  • ​color​​: 字体颜色
  • ​fontSize​​: 文本大小
  • ​fontWeight​​: 字体粗细
  • ​borderColor​​: 边框颜色
  • ​borderWidth​​: 边框宽度

动效说明(API v12+)

从 API v12 开始,Badge 的显隐可以带 ​​scale​​​ 动效,默认开启,不需要额外配置。只要你动态控制 ​​count​​​ 或 ​​value​​,它就能自动执行缩放效果,比如下方这个例子:

@Entry
@Component
struct BadgeExample {@State badgeCount: number = 1build() {Row(){Badge({count: this.badgeCount,style: {},position: BadgePosition.RightTop,}) {Image($r("app.media.startIcon")).width(50).height(50)}Button('隐藏 Badge').onClick(() => {this.badgeCount = 0})Button('显示 Badge').onClick(() => {this.badgeCount = 5})}}
}

​count = 0​​ 时 Badge 会自动隐藏,且带缩放过渡。

在这里插入图片描述


注意事项

  1. ​Badge​​ 只支持包裹一个子组件(比如图标、文字等);
  2. 你可以动态控制 ​​count​​​ 和 ​​value​​ 来触发显隐;
  3. 对于布局来说,​​Badge​​ 是个装饰性组件,不会影响内部子组件的结构;
  4. ​value: ''​​ 时默认只显示红点,不展示文本;
  5. 不建议对 ​​Badge​​​ 的子组件设置 ​​padding​​ 影响布局,可以用外部容器包一层做空间控制。

使用建议

  • 如果你只想要一个小红点状态提示,用 ​​value: ''​​ 是最省事的;
  • 如果要提示数量,用 ​​count + maxCount​​ 组合;
  • 如果你希望用户明确看到变化,用 ​​scale​​ 动效的显隐可以提升交互感知;
  • 在搭配导航栏、列表项、图标按钮时都非常适用。

结语

Badge 是 HarmonyOS ArkUI 提供的一个非常轻巧但功能强大的提醒类组件,用起来简单但场景应用非常丰富。如果你正在做一个多页面结构、或者内容多状态变化频繁的界面,这个组件一定不要错过。


http://www.hkcw.cn/article/HAxsZGpJok.shtml

相关文章

【C++】cin和cout的性能问题讨论和优化方法

目录 1、背景知识2、ios::sync_with_stdio(false)2.1 **作用**2.2 原理2.3 注意事项 3、cin.tie(0)3.1 作用3.2 原理3.3 注意事项 4、代码演示5、实例操作5.1 创建数据文件5.2 进行代码演示 个人主页<—请点击 C专栏<—请点击 1、背景知识 在 C 中&#xff0c;标准输⼊输…

【数据结构】图的存储(十字链表)

弧节点 tailvex数据域&#xff1a;存储弧尾一端顶点在顺序表中的位置下标&#xff1b;headvex 数据域&#xff1a;存储弧头一端顶点在顺序表中的位置下标&#xff1b;hlink 指针域&#xff1a;指向下一个以当前顶点作为弧头的弧&#xff1b;tlink 指针域&#xff1a;指向下一个…

(二)微服务(grpc/grpc消费者)

文章目录 项目地址一、grpc介绍1.1 项目初始化1. 创建grpc项目2. 项目结构二、Discount grpc创建2.1 实体层1. Coupon实体2.2 Protos1. 创建discount.proto2. 配置proto3. 创建DiscountService4. Program里注册服务2.3 Seed 数据1. 创建表和Seed数据2. 自动migration2.4 更新Do…

机电的焊接技术

焊接技术:高温或高压条件下,使用焊接材料(焊条或焊丝)将两块或两块以上的母材(待焊接的工件)连接 成一个整体的操作方法&#xff61; 2.3.1 焊接设备和焊接材料的分类及选用 1.焊接设备&#xff08;对应焊接方法&#xff09; 2.焊接材料&#xff08;焊条、焊丝、焊剂、焊接气…

Ⅰ.计算机二级选择题(C语言概述)

【注&#xff1a;重点题以及添加目录格式导航&#xff01;&#xff01;&#xff01;】 【重点】&#xff08;第2题&#xff09; 【重点】&#xff08;第8题&#xff09; 【重点】&#xff08;第17题&#xff09; 【重点】&#xff08;第19题&#xff09; 【重点】&#xff08;第…

ck-editor5的研究 (4):初步使用 CKEditor5 的插件功能

前言 在上一篇文章中—— ck-editor5 的研究&#xff08;3&#xff09;&#xff1a;初步使用 CKEditor5 的事件系统和API &#xff0c;我们已经初步了解了 CKEditor5 的工作方式 那么这篇文章&#xff0c;我们将初步使用 CKEditor5 的插件功能&#xff0c;我将会写一个自己的…

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类 目录 分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类分类效果功能概述程序设计参考资料 分类效果 功能概述 代码功能 该MATLAB代码实现了一个结合CNN、LSTM和注意力机制的高光谱数据分类模型&#xff0c;核心…

嵌入式项目之mini2440系统制作烧写

系统移植的必要性与组成 在嵌入式开发中&#xff0c;**系统移植&#xff08;Linux 系统定制&#xff09;** 是常见的需求&#xff0c;主要原因在于&#xff1a; 1. **官方镜像体积过大**&#xff1a;标准 Linux 发行版&#xff08;如 Ubuntu&#xff09;可能占用数 GB 存储…

OpenShift AI - 启用过时版本的 Notebook 镜像

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.18 OpenShift AI 2.19 的环境中验证 文章目录 查看可用 Notebook 镜像控制台查看命令行查看 Notebook 镜像和 Image Stream 对应关系启用老版本的 Notebook 镜像参考 查看可用 Notebook 镜…

“人单酬“理念:财税行业的自我驱动革命

引言&#xff1a;当薪酬不再是"固定数字"&#xff0c;而是"成长标尺" "为什么有人拼命工作却收入停滞&#xff1f;为什么企业总在人才流失中挣扎&#xff1f;"这些问题背后&#xff0c;往往隐藏着传统薪酬体系的僵化。而"人单酬"&…

yolo目标检测助手:具有模型预测、图像标注功能

在人工智能浪潮席卷各行各业的今天&#xff0c;计算机视觉模型&#xff08;如 YOLO&#xff09;已成为目标检测领域的标杆。然而&#xff0c;模型的强大能力需要直观的界面和便捷的工具才能充分发挥其演示、验证与迭代优化的价值。为此&#xff0c;我开发了一款基于 WPF 的桌面…

Spring Ai 从Demo到搭建套壳项目(一)初识与实现与deepseek对话模式

前言 为什么说Java长青&#xff0c;主要是因为其生态圈完善&#xff0c;Spring又做了一款脚手架&#xff0c;把对接各个LLM厂商的sdk做了一遍&#xff0c;形成一系列的spring-ai-starter-** 的依赖。 目前为止版本去到1.0.0.M6&#xff0c;golang跟不上了吧&#xff0c; Make …

机器学习实验七--SVM垃圾邮件分类器

SVM垃圾邮件分类器 一、什么是SVM二、实例&#xff1a;垃圾邮件分类器1.实验要求2.原理解释2.1 数据预处理流程2.2 特征提取方法2.3 SVM分类器 3.代码实现4.实验结果5.实验总结 一、什么是SVM 支持向量机(Support Vector Machine, SVM)是一种监督学习算法&#xff0c;主要用于…

lidar和imu的标定(一)Robust Real-time LiDAR-inertial Initialization

一、Robust Real-time LiDAR-inertial Initialization 看了这篇文章。在方法中&#xff0c;A和B都不细看了。主要看后边的几个部分。 C. LiDAR-inertial Initialization 在这一部分中&#xff0c; 1) Data Preprocess:主要是准备数据。 1.雷达里程计之后&#xff0c;可以得…

【手写系列】手写线程池

PS&#xff1a;本文的线程池为演示 Demo&#xff0c;皆在理解线程池的工作原理&#xff0c;并没有解决线程安全问题。 最简单一版的线程池 public class MyThreadPool {// 存放线程&#xff0c;复用已创建的线程List<Thread> threadList new ArrayList<>();publ…

Git企业级项目管理实战

目录 1. 准备工作 2. 添加成员 2.1 添加企业成员 2.2 添加项目成员 2.3 添加仓库开发人员 3. 开发场景 - 基于git flow模型的实践 3.1 新需求加入 3.2 修复测试环境 Bug 3.3 修改预发布环境Bug 3.4 修改正式环境 Bug 3.5 紧急修复正式环境 Bug 4. 拓展阅读 4.1 其…

go环境配置

下载对应版本的 go 版本 https://go.dev/dl/ 配置 vim ~/.zshrc export GOROOT/usr/local/go export PATH$PATH:$GOROOT/binsource ~/.zshrc >>>>>> go versiongoland 配置&#xff1a; &#x1f50d; 一、什么是GOPATH&#xff1f; GOPATH 是旧的项目结…

MySql(十二)

目录 MySql约束 1.添加主键约束 语法格式 1&#xff09;创建一个带主键的表 查看表结构 2&#xff09;创建表的时候指定主键名称 查看表结构 3&#xff09;创建一个表然后&#xff0c;然后再使用alter为列添加主键 查看表结构 4&#xff09;为表添加数据 1---正常数据 2---主键…

chrome.runtime.sendMessage 和 new FormData()

chrome.runtime.sendMessage 是Chrome扩展程序API中的一个方法&#xff0c;可用于背景脚本和内容脚本之间的消息传递。 new FormData() 提供了一种方便的方式来构建表单数据集。 在Chrome插件中&#xff0c;在 background.js 和 content.js 进行通信时使用了使用new FormData()…

数据结构-排序-排序的七种算法(2)

一&#xff0c;七种算法的介绍和比较 二&#xff0c;冒泡排序 原理&#xff1a;重复遍历列表&#xff0c;比较相邻元素&#xff0c;如果顺序错误就交换它们 时间复杂度&#xff1a; 最好&#xff1a;O(n)&#xff08;已有序时&#xff09; 平均&#xff1a;O(n) 最坏&#x…