HarmonyOS(41) Badge 消息实现99+功能

news2024/11/25 22:37:58

Badge标记

  • Badge作用
  • 实现效果
  • 源码
  • 参考资料

Badge作用

APP里常见的功能是在一个tab的右上角展示未读消息99+,HarmonyOS就提供了实现该功能的组件器组件。该组件支持展示数字、数字超过100自动展示99+、文字。同时支持修改文字和数字的颜色,以及小圆点的背景色。还支持修改标记展示的位置、大小等。

实现效果

在这里插入图片描述

源码

import { IntroductionTitle } from '../../../../common/IntroductionTitle';
import { TitleBar } from '../../../../common/TitleBar';

(Row)
function rowStyle() {
  .margin(10)
  .width('100%')
  .borderRadius(14)
  .padding({ left: 12, right: 12 })
  .justifyContent(FlexAlign.SpaceBetween)
}

(Badge)
function badgeStyle() {
  .layoutWeight(1)
  .borderRadius(20)
  .margin({ left: 12, right: 12 })
  .backgroundColor($r('app.color.tab_bar_divider'))
}



struct BadgeSample {
  build() {
    Column() {
      TitleBar({ title: $r('app.string.auxiliary_badge') })
      Scroll() {
        Column() {
          //标记类型
          IntroductionTitle({ introduction: $r('app.string.badge_type') })
          Row() {
            Badge({
              count: 1,
              style: {
                color: Color.Blue,
                fontSize: 16,
                badgeSize: 20,
                badgeColor: Color.Red }
            }) {
              this.TextContainer($r('app.string.badge_number'))
            }
            .badgeStyle()

            Badge({
              value: 'new',
              style: {
                color: 0xFFFFFF,
                fontSize: 14,
                badgeSize: 20,
                badgeColor: Color.Red }
            }) {
              this.TextContainer($r('app.string.badge_string'))
            }
            .badgeStyle()
          }//end row
          .rowStyle()

          //数字标记最大消息数
          IntroductionTitle({ introduction: $r('app.string.badge_max') })
          Row() {
            Badge({
              count: 10, // 设置提醒消息数100
              style: {
                color: 0xFFFFFF,
                fontSize: 16,
                badgeSize: 20,
                badgeColor: Color.Red }
            }) {
              this.TextContainer($r('app.string.badge_number_normal'))
            }
            .badgeStyle()

            Badge({
              count: 100, // 设置提醒消息数100
              style: {
                color: 0xFFFFFF,
                fontSize: 16,
                badgeSize: 20,
                badgeColor: Color.Red }
            }) {
              this.TextContainer($r('app.string.badge_number_max'))
            }
            .badgeStyle()
          }
          .rowStyle()

          // 标记位置
          IntroductionTitle({ introduction: $r('app.string.badge_location') })
          Row() {
            Badge({
              count: 1, // 设置提醒消息数
              position: BadgePosition.Left,
              style: {
                color: 0xFFFFFF,
                fontSize: 16,
                badgeSize: 20,
                badgeColor: Color.Red }
            }) {
              this.TextContainer($r('app.string.badge_left'))
            }
            .badgeStyle()

            Badge({
              count: 1, // 设置提醒消息数
              position: BadgePosition.RightTop,
              style: {
                color: 0xFFFFFF,
                fontSize: 16,
                badgeSize: 20,
                badgeColor: Color.Red }
            }) {
              this.TextContainer($r('app.string.badge_top'))
            }
            .badgeStyle()

            Badge({
              count: 1, // 设置提醒消息数
              position: BadgePosition.Right,
              style: {
                color: 0xFFFFFF,
                fontSize: 16,
                badgeSize: 20,
                badgeColor: Color.Red }
            }) {
              this.TextContainer($r('app.string.badge_right'))
            }
            .badgeStyle()
          }
          .rowStyle()

          //标记样式
          IntroductionTitle({ introduction: $r('app.string.badge_style') })
          Row() {
            //蓝色大标记
            Badge({
              value: ' ',
              style: {
                color: 0xFFFFFF,
                fontSize: 16,
                badgeSize: 24,
                badgeColor: Color.Blue }
            }) {
              this.TextContainer($r('app.string.badge_blue'))
            }
            .badgeStyle()

            //绿色小标记
            Badge({
              value: ' ',
              style: {
                color: 0xFFFFFF,
                fontSize: 16,
                badgeSize: 14,
                badgeColor: Color.Green }
            }) {
              this.TextContainer($r('app.string.badge_green'))
            }
            .badgeStyle()
          }
          .rowStyle()
        }
        .constraintSize({ minHeight: '100%' })
      }
    }
    .width('100%')
    .backgroundColor($r('app.color.background_shallow_grey'))
  }

  
  TextContainer(description: Resource) {
    Text(description)
      .maxLines(2)
      .fontSize(16).padding(8)
      .fontColor($r('app.color.font_color_shallow'))
      .textAlign(TextAlign.Center)
  }
}

参考资料

Badge API
源码传送门:
下载“语言-语言基础类库”,运行后进入:动画>专场动画>悬浮窗。即可看到运行效果。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1872168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【源码+文档+调试讲解】学术团队管理系统设计与实现

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学术团队管理系统就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信息…

数据稀疏如何学好embedding?

在推荐系统中,冷启动或长尾是一个常见的问题,模型在数据量较少的user或item上的预测效果很差。造成冷启动样本预测效果不好的重要原因之一是,冷启动样本积累的数据比较少,不足以通过训练得到一个好的embedding(通过use…

开源/标准版 首页 logo大小修改

这个是diy的: 文件地址:template/uni-app/pages/index/diy/components/headerSerch.vue 这个是页面设计的: 文件地址:template/uni-app/pages/index/visualization/components/headerSerch.vue 先删除这三个 然后改下图的地方

How to persist LangChain conversation memory (save and load)

题意:如何持久化 LangChain 对话记忆(保存和加载) 问题背景: Im creating a conversation like so: 我正在创建一个对话,如下所示: llm ChatOpenAI(temperature0, openai_api_keyOPENAI_API_KEY,…

python CSSE7030

1 Introduction In this assignment, you will implement a (heavily) simplified version of the video game ”Into The Breach”. In this game players defend a set of civilian buildings from giant monsters. In order to achieve this goal, the player commands a s…

FuTalk设计周刊-Vol.026

🔥🔥AI漫谈 热点捕手🔥🔥 1、Hotshot-XL AI文本转GIF Hotshot-XL 是一种 AI 文本转 GIF 模型,经过训练可与Stable Diffusion XL一起使用。能够使用任何现有或新微调的 SDXL 模型制作 GIF。 网页体验 网页http://htt…

【吊打面试官系列-MyBatis面试题】MyBatis 框架的缺点?

大家好,我是锋哥。今天分享关于 【MyBatis 框架的缺点?】面试题,希望对大家有帮助; MyBatis 框架的缺点? 1、SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底…

昇思25天学习打卡营第5天|数据变换Transforms

数据变换Transforms 介绍Transforms分类Common TransformsVision TransformsText TransformsPythonTokenizer LookupLambda Transforms 参考 介绍 MindSpore提供不同种类的数据变换(Transforms),配合数据处理Pipeline来实现数据预处理。 所有…

Nest使用multer实现文件上传,并实现大文件分片上传(下)

上节我们学了在 Express 里用 multer 包处理 multipart/form-data 类型的请求中的 file。 单个、多个字段的单个、多个 file 都能轻松取出来。 接下来我们就来学习一下在Nest 里使用multer。 一,Nest如何使用multer实现文件上传 首先我们先创建一个Nest项目: nest…

BFS 解决拓扑排序

例题一 解法: 算法思路: 原问题可以转换成⼀个拓扑排序问题。⽤ BFS 解决拓扑排序即可。 拓扑排序流程: a. 将所有⼊度为 0 的点加⼊到队列中; b. 当队列不空的时候,⼀直循环: i. 取出队头元素&am…

Transformers 安装与基本使用

文章目录 Github文档推荐文章简介安装官方示例中文情感分析模型分词器 Tokenizer填充 Padding截断 Truncation google-t5/t5-small使用脚本进行训练Pytorch 机器翻译数据集下载数据集格式转换 Github https://github.com/huggingface/transformers 文档 https://huggingface…

上海亚商投顾:沪指震荡下跌 多只银行股创年内新高

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日震荡调整,沪指尾盘跌近1%,深成指、创业板指均跌超1.5%。 板块概念方面&a…

六西格玛项目实战:数据驱动,手机PCM率直线下降

在当前智能手机市场日益竞争激烈的背景下,消费者对手机质量的要求达到了前所未有的高度。PCM(可能指生产过程中的某种不良率或缺陷率)作为影响手机质量的关键因素,直接关联到消费者满意度和品牌形象。为了应对这一挑战&#xff0c…

ICCV2023知识蒸馏相关论文速览

Paper1 Spatial Self-Distillation for Object Detection with Inaccurate Bounding Boxes 摘要原文: Object detection via inaccurate bounding box supervision has boosted a broad interest due to the expensive high-quality annotation data or the occasional inevit…

Windows CMD:快速入门

文字目录 一、概述二、常用命令2.1 切换盘符2.2 查看当前盘符下的所有文件2.3 进入单级目录2.4 返回上一级目录2.5 进入多级目录2.6 回到盘符目录2.7 清屏2.8 退出 三、练习 一、概述 CMD 是 Command的缩写,即命令的意思,它的作用是利用命令的方式来操作…

Linux-笔记 使用SCP命令传输文件报错 :IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

前言 使用scp命令向开发板传输文件发生报错&#xff0c;报错见下图; 解决 rm -rf /home/<用户名>/.ssh/known_hosts 此方法同样适用于使用ssh命令连接开发板报错的情况。 参考 https://blog.csdn.net/westsource/article/details/6636096

大模型赋能全链路可观测性:运维效能的革新之旅

目录 全链路可观测工程与大模型结合---提升运维效能 可观测性&#xff08;Observability&#xff09;在IT系统中的应用及其重要性 统一建设可观测数据 统一建设可观测数据的策略与流程 全链路的构成和监控形态 云上的全链路可视方案 为什么一定是Copilot 大模型的Copilo…

基于iview.viewUI实现行合并(无限制/有限制合并)【已验证可正常运行】

1.基于iview.viewUI实现行合并&#xff08;列之间没有所属对应关系&#xff0c;正常合并&#xff09; 注&#xff1a;以下代码来自于GPT4o&#xff1a;国内直连GPT4o 只需要修改以下要合并的列字段&#xff0c;就可以方便使用啦 mergeFields: [majorNo, devNam, overhaulAdvic…

【EXCEL技巧】Excel如何将数字前面的0去掉

Excel文件中经常会遇到数据是0001345这种&#xff0c;那么&#xff0c;如何将数字前面的0去掉呢&#xff1f;今天和大家分享方法。 首先&#xff0c;选中一列空的单元格&#xff0c;然后在单元格中输入公式TEXT(D3,0)&#xff0c;这里的D3指的是前面带有0的数据的位置 回车之后…

Linux基础- 使用 Apache 服务部署静态网站

目录 零. 简介 一. linux安装Apache 二. 创建网页 三. window访问 修改了一下默认端口 到 8080 零. 简介 Apache 是世界使用排名第一的 Web 服务器软件。 它具有以下一些显著特点和优势&#xff1a; 开源免费&#xff1a;可以免费使用和修改&#xff0c;拥有庞大的社区支…