Jetpack:014-Jetpack中的小红点

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 Badge
    • 2.2 BadgedBox
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了Jetpack库中底部栏相关的内容,本章回中主要介绍 小红点。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们在本章回中介绍的小红点是指位于导航栏图标右侧的小红点,它通常用来显示提示信息,常见的场景是微信底部导航栏中显示小红点,红点内还有数字,用来显示发来的消息数量。本章回中将介绍如何在底部导航栏中添加小红点。

2. 使用方法

小红点通过Badge可组合函数实现,不过还需要设置它与图标的位置,推荐的做法是使用BadgedBox可组合函数,该函数会自动调整小红点的位置,使用小红点位于图标的右上方。这两个可组合函数都提供了相关的参数来控制自己,接下来我们将分别介绍它们各自的参数。

2.1 Badge

  • containerColor参数:用来控制小红点的背景颜色,通常是红色;
  • contentColor参数:用来控制小红点中内容的颜色,通常是白色;
  • content参数:用来存放小红点中的内容,通常使用Text可组合函数;

除了上面介绍的这些参数外,该可组合函数还有一个modifier通用参数,该参数可以修改小红点的大小。

2.2 BadgedBox

  • badge参数:主要用来存放小红点,把Badge可组合函数赋值给它就可以;
  • content参数:主要用来存放小红点附属的图标,通常使用Icon可组合函数给它赋值;

此外,content参数是可组合函数类型,而且是最后一个参数,因此可以使用尾lambda的语法给它赋值。我们将在后面的小节中通过示例代码来演示具体的用法。该函数会自动调整小红点的位置,使小红点位于content参数对应图标的右上方。

3. 示例代码

//设置bar上的图标
icon = {
    //在bar的图标上创建小红点,不过不能调整小红点的位置
    BadgedBox(
        modifier = Modifier.align(Alignment.CenterVertically),
        badge = {
            //依据条件显示小红点:选中时才显示小红点
            if(selectedItem == index)
            Badge(
                //调整小红点的大小
                modifier = Modifier.size(16.dp),
                containerColor = Color.Red,
                contentColor = Color.White,
                content = {Text(text = "6")},
            )else
                null
        },
    ) {
        Icon(imageVector = item.icon, contentDescription = null )
    }
},

上面的示例代码中演示了BadgeBadgedBox两个可组合函数的用法,同时把BadgedBox可组合函数赋值给了NavigationBarItem的icon参数,也就是代码中最开始的icon,而与这个icon真正对应的图标位于代码最后的Icon函数中,代码中的小红点就位于这个ionc的右上方。

此外,我们还在代码中做了判断处理,如果当前图标被选中了才显示小红点,否则不显示小红点,这属于业务逻辑,大家可以依据项目需求自行设定。下面是程序的运行效果图:
在这里插入图片描述

4. 内容总结

最后,我们对本章回的内容做一个总结:

  • 小红点通常附属在某个图标的右上方,主要用来显示提示性消息;
  • 小红点通过可组合函数Badge实现,不过需要手动调整它与图标的位置;
  • 可组合函数BadgedBox可以配合Badge实现小红点,而且会自动调整小红点的位置;

看官们,关于Jetpack小红点相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!


http://www.niftyadmin.cn/n/5110387.html

相关文章

基于Java的人事考勤签到管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

CCC数字钥匙设计【NFC】--NFC卡相关基础知识

CCC3.0的NFC技术中,除车端,手机端需包含NFC功能外,另外一般还会配置一个NFC卡,用于备份使用。本文主要介绍NFC卡相关的基础知识。 1、NFC卡 & 智能卡 NFC卡是一种智能卡,其与信用卡大小相同,可通过嵌入…

JAVA面经整理(MYSQL篇)

索引: 索引是帮助MYSQL高效获取数据的排好序的数据结构 1)假设现在进行查询数据,select * from user where userID89 2)没有索引是一行一行从MYSQL进行查询的,还有就是数据的记录都是存储在MYSQL磁盘上面的,比如说插入数据的时候是向磁盘上面…

vue 02

目录简介 什么是渐进式框架? 就是一开始不需要你完全掌握它的全部功能特性,可以后续逐步增加功能。没有多做职责之外的事情。所以VUE的适用面很广,你可以用它代替老项目中的JQuery。也可以在新项目启动初期,有限的使用VUE的功能…

连通性相关学习笔记

基础 前置知识 强连通:对于有向图中两点 i i i, j j j,若存在 i i i 到 j j j 和 j j j 到 i i i 的路径,则称 i i i, j j j 强连通。强连通:对于有向图中两点 i i i, j j j&#xff0…

前缀++与后缀++

两个函数分别是前缀自增运算符 和后缀自增运算符 的重载版本。它们之间的区别在于返回值和参数。 前缀自增运算符 : 当你使用前缀自增运算符,例如 date,它会首先自增 date,然后返回自增后的值。在这个函数中,date 首…

20T算力打造轻地图方案,这家智驾公司持续内卷

作者 | 张祥威 编辑 | 德新 行泊一体的话题热度不减。 近日,宏景智驾核心产品单SoC行泊一体解决方案已全场景跑通,可实现高速导航辅助驾驶。 在推进量产的同时,宏景智驾也在布局BEV感知、轻高精地图甚至去高精地图的智驾方案,同…

力扣:盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 …