ArkUI 开发框架提供了 Badge 容器组件,它用来标记提示信息的容器组件,最常用的场景比如 Launcher
桌面上的消息提示等,本节笔者简单介绍一下 Badge 的使用。
Badge 定义介绍
interface BadgeInterface {
(value: BadgeParamWithNumber): BadgeAttribute;
(value: BadgeParamWithString): BadgeAttribute;
}
declare interface BadgeParam {
position?: BadgePosition;
style: BadgeStyle;
}
declare interface BadgeParamWithNumber extends BadgeParam {
count: number;
maxCount?: number;
}
declare interface BadgeParamWithString extends BadgeParam {
value: string;
}
declare interface BadgeParam {
position?: BadgePosition;
style: BadgeStyle;
}
Badge 的构造方法允许接收 BadgeParamWithNumber
和 BadgeParamWithString
两种类型的参数,它们都继承自 BadgeParam
,BadgeParam
参数说明如下:
- position:设置 badge 的显示位置,
BadgePosition
提供了以下 3 种位置:- Right: badge 显示在右侧纵向居中。
- RightTop(默认值): badge 显示在右上角。
- Left: badge 显示在左侧纵向居中。
- style:设置 badge 的显示样式,
BadgeStyle
样式参数说明如下:- color:设置 badge 的文本颜色,默认为白色。
- fontSize:设置 badge 的文本字体大小,默认为 10 vp。
- badgeSize:设置 badge 的显示大小。
- badgeColor:设置 badge 的背景颜色,默认为红色。
简单样例如下所示:
Badge({
value: ' ',
position: BadgePosition.Left, // 设置 badge 居左显示
style: {badgeSize: 10, badgeColor: Color.Red}// 设置 badge 的显示样式
}) {
Text("Badge")
.size({width: 100, height: 50})
.fontSize(20)
.backgroundColor("#aabbcc")
}
.size({width: 100, height: 50})
Badge({
value: ' ',
position: BadgePosition.Right, // 设置 badge 居右显示
style: {badgeSize: 10, badgeColor: Color.Red}// 设置 badge 的显示样式
}) {
Text("Badge")
.size({width: 100, height: 50})
.fontSize(20)
.backgroundColor("#aabbcc")
}
.size({width: 100, height: 50})
Badge({
value: ' ',
position: BadgePosition.RightTop, // 设置 badge 居右上角显示
style: {badgeSize: 10, badgeColor: Color.Red}// 设置 badge 的显示样式
}) {
Text("Badge")
.size({width: 100, height: 50})
.fontSize(20)
.backgroundColor("#aabbcc")
}
.size({width: 100, height: 50})
样例运行结果如下图所示:
BadgeParamWithNumber
可以根据数字创建提醒组件,各参数说明如下:
- count:设置提醒消息数。
- maxCount:设置提醒消息的最大数,超过最大消息时仅显示 maxCount+。
简单样例如下所示:
Badge({
count: 10, // 设置 badge 显示的数量
maxCount: 100, // 设置 badge 显示的最大数量
position: BadgePosition.RightTop,// 设置 badge 显示在右上角
style: {badgeColor: Color.Red} // 设置 badge 的显示样式
}) {
Text("Badge")
.size({width: 100, height: 50})
.fontSize(20)
.backgroundColor("#aabbcc")
}
.size({width: 100, height: 50})
Badge({
count: 110, // 设置 badge 显示的数量
maxCount: 99, // 设置 badge 显示的最大数量
position: BadgePosition.RightTop,// 设置 badge 显示在右上角
style: {badgeColor: Color.Red} // 设置 badge 的显示样式
}) {
Text("Badge")
.size({width: 100, height: 50})
.fontSize(20)
.backgroundColor("#aabbcc")
}
.size({width: 100, height: 50})
BadgeParamWithString
可以根据字符串创建提醒组件,各参数说明如下:
- value:提示内容的文本字符串。
简单样例如下所示:
Badge({
value: "aaa", // 设置 badge 的显示文本
position: BadgePosition.RightTop,// 设置 badge 显示在右上角
style: {badgeColor: Color.Red} // 设置 badge 的显示样式
}) {
Text("Badge")
.size({width: 100, height: 50})
.fontSize(20)
.backgroundColor("#aabbcc")
}
.size({width: 100, height: 50})
Badge({
value: "bbb", // 设置 badge 的显示文本
position: BadgePosition.RightTop,// 设置 badge 显示在右上角
style: {badgeColor: Color.Red} // 设置 badge 的显示样式
}) {
Text("Badge")
.size({width: 100, height: 50})
.fontSize(20)
.backgroundColor("#aabbcc")
}
.size({width: 100, height: 50})
Badge 属性介绍
declare class BadgeAttribute extends CommonMethod<BadgeAttribute> {
}
由源码可知,Badge
没有定义额外的自有属性。
Badge 完整样例
@Entry @Component struct ComponentTest {
@State counts: number = 1
@State message: string = 'new'
build() {
Flex({ justifyContent: FlexAlign.SpaceAround }) {
Badge({
count: this.counts,
maxCount: 99,
style: { color: 0xFFFFFF, fontSize: 16, badgeSize: 20, badgeColor: Color.Red }
}) {
Button('message')
.onClick(() => {
this.counts++
})
.width(100).height(50).backgroundColor(0x317aff)
}.width(100).height(50)
Badge({
value: this.message,
style: { color: 0xFFFFFF, fontSize: 9, badgeSize: 20, badgeColor: Color.Blue }
}) {
Text('message')
.width(80)
.height(50)
.fontSize(18)
.lineHeight(37)
.borderRadius(10)
.textAlign(TextAlign.Center)
.backgroundColor(Color.Pink)
}
.width(80).height(50)
Badge({
value: ' ',
position: BadgePosition.RightTop,
style: { badgeSize: 6, badgeColor: Color.Red }
}) {
Text('message')
.width(90)
.height(50)
.fontSize(18)
.lineHeight(37)
.borderRadius(10)
.textAlign(TextAlign.Center)
.backgroundColor(Color.Pink)
}.width(90).height(50)
}.width('100%').margin({ top: 10 })
}
}
📢:Badge 组件使用的时候要设置具体宽高,否则会铺满父组件。
码牛课堂也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线。大家可以进行参考学习:https://qr21.cn/FV7h05
①全方位,更合理的学习路径:
路线图包括ArkTS基础语法、鸿蒙应用APP开发、鸿蒙能力集APP开发、次开发多端部署开发、物联网开发等九大模块,六大实战项目贯穿始终,由浅入深,层层递进,深入理解鸿蒙开发原理!②多层次,更多的鸿蒙原生应用:
路线图将包含完全基于鸿蒙内核开发的应用,比如一次开发多端部署、自由流转、元服务、端云一体化等,多方位的学习内容让学生能够高效掌握鸿蒙开发,少走弯路,真正理解并应用鸿蒙的核心技术和理念。③实战化,更贴合企业需求的技术点:
学习路线图中的每一个技术点都能够紧贴企业需求,经过多次真实实践,每一个知识点、每一个项目,都是码牛课堂鸿蒙研发团队精心打磨和深度解析的成果,注重对学生的细致教学,每一步都确保学生能够真正理解和掌握。
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:https://qr21.cn/FV7h05
如何快速入门:
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr21.cn/FV7h05
大厂鸿蒙面试题::https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向