Android之使用QBadgeView给TabLayout顶部栏设置数量角标,数值可更新

news2024/11/20 14:26:32

TabLayout搭配ViewPager、Fragement使用可看另一篇文章:
Android中TabLayout+ViewPager+Fragment实现顶部导航栏

本文主要描述给TabLayout的某一栏添加角标,数值可更新:

一、效果

在这里插入图片描述

二、TabLayout使用

1、xml文件中

<com.google.android.material.tabs.TabLayout
                                    android:id="@+id/audit_tabLayout"
                                    android:layout_width="match_parent"
                                    android:layout_height="36dp"
                                    android:layout_marginStart="4dp"
                                    android:layout_marginEnd="4dp"
                                    android:layout_marginTop="3dp"
                                    android:layout_marginBottom="3dp"
                                    app:tabBackground="@drawable/audit_tab_button_background"
                                    app:tabRippleColor = "@android:color/transparent"
                                    app:tabIndicatorColor="@color/white"
                                    app:tabIndicatorHeight="36dp"
                                    app:tabTextColor="@color/color_222222"
                                    app:tabSelectedTextColor="@color/color_D32124"
                                    app:tabMode="fixed"
                                    app:tabPadding="3dp"
                                    app:tabIndicator="@color/white"/>

2、标题栏背景(可自定义),圆角灰白色背景

位置:drawable/audit_tab_button_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="6dp"
    />
<solid
    android:color="@color/color_F7F7F7"/>
<size
    android:width="50dp"
    android:height="50dp"/>
<stroke
    android:width="2dp"
    android:color="@color/color_F7F7F7"/>
</shape>

3、子tab样式

位置:layout/tv_tab.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/tv_tab"
        android:text="sss"
        android:textStyle="bold"
        android:textColor="@color/color_222222"
        android:layout_gravity="bottom"
        android:textSize="@dimen/sp_21"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

3、Activity中初始化控件时候设置TabLayout标题栏具体内容

(1)绑定控件

 @InjectView(id = R.id.audit_tabLayout,click = true)
 private TabLayout mAuditTabLayout;

(2)初始化TabLayout栏,,添加两个子tab

//tab1
TabLayout.Tab tab1 = mAuditTabLayout.newTab().setCustomView(R.layout.tv_tab);
TextView tv_tab1 = tab1.getCustomView().findViewById(R.id.tv_tab);
 tv_tab1.setText("待审核");
 tv_tab1.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.sp_16));
 tv_tab1.setTextColor(ContextCompat.getColor(this,R.color.color_D32124));
mAuditTabLayout.addTab(tab1);
//调用自定义方法,给tab1添加数量角标
QBadge(this,mAuditTabLayout.getTabAt(0).view,tab1_number);

//tab2
TabLayout.Tab tab2 = mAuditTabLayout.newTab().setCustomView(R.layout.tv_tab);
TextView tv_tab2 = tab2.getCustomView().findViewById(R.id.tv_tab);
tv_tab2.setText(getString(R.string.audit_audited));
tv_tab2.setTextColor(ContextCompat.getColor(this,R.color.color_222222));
tv_tab2.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.sp_16));
mAuditTabLayout.addTab(tab2);

三、红色角标设置

1、红色角标自定义方法

	private static Badge qBadgeView;

    /**
     * 右上小红点数量提示
     * @param context  当前activity
     * @param view  要显示在那个空间上的View
     * @param i 数量
     */
    public static void QBadge(Context context, View view, int i){
        qBadgeView = new QBadgeView(context)
                .bindTarget(view)
                .setBadgeNumber(i)  //角标数值
                .setBadgeBackgroundColor(ContextCompat.getColor(context,R.color.color_E82326))  //角标背景色
                .setBadgeTextColor(ContextCompat.getColor(context,R.color.white))  //角标数值字体颜色
                .setBadgeTextSize(10f,true)  //角标数值字体大小
                .setBadgeGravity(Gravity.END | Gravity.TOP)  //角标位置(可看源码进行设置)
                .setGravityOffset(40,3,true);  //位置
    }

2、获取TabLayout单个栏的view,并设置右上角角标

//调用自定义方法,给tab1添加数量角标
QBadge(this,mAuditTabLayout.getTabAt(0).view,tab1_number);

3、更新角标数据

根据项目需求可在对应地方随时调用设置数量方法进行角标数值的更新

int number = 10;
qBadgeView.setBadgeNumber(number);

四、完成,nice!

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

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

相关文章

kvm 不同存储池中卷的复制 virsh vol-create-from 的简单使用

virsh vol-create-from 命令介绍 主要用的就是这四个参数 virsh vol-crate-from --help使用方式 sdbpool : 要复制到的存储池名称 (这个是最终文件粘贴的池) virsh pool-list/opt/vol01.xml &#xff1a; 这个是你将要复制卷的xml // sdcvol1&#xff1a; 复制目标 // 导…

【漏洞复现】Casdoor-任意文件读取

目录 【漏洞介绍】 【资产测绘Query】 【漏洞复现】 【漏洞介绍】 Casdoor系统static存在任意文件读取漏洞 【漏洞描述】 Casdoor是一个基于OAuth 2.0、OIDC、SAML 和 CAS 的&#xff0c;UI-first的身份和访问管理(IAM)/单点登录(SSO)平台。使用 Go 和react开发&#xff0…

外汇天眼:外汇投资入门必看!做好3件事,任何人都能提高交易胜率

近年来外汇市场愈来愈热络&#xff0c;许多投资人看准世界金融变化的趋势&#xff0c;纷纷开始入场布局&#xff0c;期望把握行情大赚一笔。 如果你之前没有做过外汇交易&#xff0c;建议最好先透过「外汇天眼学院」学习各种相关的知识与技术分析&#xff0c;等到对外汇有一定的…

JDBC-day06(数据库连接池)

八&#xff1a;数据库连接池 1. 传统连接数据库的模式 在使用开发基于数据库的web程序时&#xff0c;传统的模式基本是按以下步骤&#xff1a; 在主程序&#xff08;如servlet、bea&#xff0c;ns&#xff09;中建立数据库连接进行sql操作断开数据库连接 传统的模式存在的问…

FreeFileSync开机实时自动同步文件

FreeFileSync 是一款使用简单的开放源码文件夹同步和比较软件&#xff0c;它用于快速简便的配置和行动之间的同步两个文件夹。 RealTimeSync 是开源同步软件 FreeFileSync 附带的一个小工具&#xff0c;用于自动同步或者备份文件&#xff0c;相当于一些移动硬盘自带的备份应用…

5种常见的软件缺陷分析方法

软件缺陷分析方法对于软件开发非常重要&#xff0c;能够帮助团队识别和分析软件中的缺陷问题&#xff0c;从而制定相应的解决方案&#xff0c;并持续改进软件质量和可靠性。通过合理应用这些方法&#xff0c;可以大幅提高软件开发效率和质量。 软件开发过程中&#xff0c;可能存…

【AI视野·今日NLP 自然语言处理论文速览 第五十五期】Mon, 16 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 16 Oct 2023 Totally 53 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers PromptRE: Weakly-Supervised Document-Level Relation Extraction via Prompting-Based Data Programming Au…

LSTM-CRF模型详解和Pytorch代码实现

在快速发展的自然语言处理领域&#xff0c;Transformers 已经成为主导模型&#xff0c;在广泛的序列建模任务中表现出卓越的性能&#xff0c;包括词性标记、命名实体识别和分块。在Transformers之前&#xff0c;条件随机场(CRFs)是序列建模的首选工具&#xff0c;特别是线性链C…

OpenHarmony 持久化存储 UI 状态:PersistentStorage

前两个小节介绍的 LocalStorage 和 AppStorage 都是运行时的内存&#xff0c;但是在应用退出再次启动后&#xff0c;依然能保存选定的结果&#xff0c;是应用开发中十分常见的现象&#xff0c;这就需要用到 PersistentStorage。 PersistentStorage 是应用程序中的可选单例对象…

科学指南针XPS | SEM | BET 降价:不赚钱,就和您交个朋友

尊敬的各位客户&#xff1a; 感谢您一直以来对科学指南针服务平台&#xff08;下文简称&#xff1a;科学指南针&#xff09;的支持和信任&#xff01;科学指南针本着服务第一&#xff0c;客户至上的精神&#xff0c;多年来坚持为客户提供高质量的测试和服务&#xff0c;获得了广…

将日志压缩并归档到 Amazon S3 Glacier 存储层中

在分布式架构中&#xff0c;经常需要保存应用程序的日志&#xff0c;对于亚马逊云科技的客户来说&#xff0c;保存通常是通过一个 Amazon S3 桶来完成。这些日志可能包含运行时事务、错误、故障状态、应用程序指标和统计信息。这些日志将被用于商业智能&#xff0c;以提供有用的…

创龙瑞芯微RK3568参数修改(调试口波特率和rootfs文件)

前言 前面写了基本的文件编译、系统编译和系统烧写&#xff0c;差不多前期工作就准备的差不多了。目前的东西能解决大部分入门级的需求。当然如果需要开发的话&#xff0c;还需要修改其他东西&#xff0c;下面一步一步的给小伙伴介绍关键参数怎么修改。 给定波特率 拿到开发板…

Stable Diffusion原理

一、Diffusion扩散理论 1.1、 Diffusion Model&#xff08;扩散模型&#xff09; Diffusion扩散模型分为两个阶段&#xff1a;前向过程 反向过程 前向过程&#xff1a;不断往输入图片中添加高斯噪声来破坏图像反向过程&#xff1a;使用一系列马尔可夫链逐步将噪声还原为原始…

【全国大学生loT设计竞赛】安谋科技灵动赛题国二分享:MagicDog—仿生狗四足机器人

本文参加极术社区和灵动微电子组织的2022全国大学生物联网设计作品征集活动。 “全国大学生物联网设计竞赛”是以促进国内物联网相关专业建设和人才培养为目标&#xff0c;以物联网技术为核心&#xff0c;激发物联网相关专业学生的创造、创新、创业活力&#xff0c;推动高校创新…

服装行业如何做数字化转型?

服装行业如何做数字化转型&#xff1f; &#xff08;一&#xff09;明确定位 企业在开启数字化转型之旅前&#xff0c;需要"认清自我&#xff0c;明确定位&#xff0c;持续创新"。厚鸟科技有企业数字化转型成熟度的指标定义&#xff0c;帮助企业进行综合评估&#…

java 对接微信支付Native下单API报错: java.security.InvalidKeyException: Illegal key size

受到美国法律的约束&#xff0c;早期Java的运行时限制了JCE支持的密钥长度&#xff0c;即默认不支持256位的AES。解决的方法有三个&#xff1a; 1、&#xff08;推荐&#xff09;升级Java 8u162&#xff0c;默认使用ulimited policy 2、Java 8u151和8u152&#xff0c;可以在你的…

赶快收藏不迷路,不允许你还不知道这几个程序员接单平台!!!

作为一个每天和26键打交道的程序员&#xff0c;谁还不想在闲暇之余做点兼职&#xff0c;赚点外快呢&#xff0c;毕竟做人嘛&#xff0c;谁会和钱过不去嘞&#xff0c;但是你是不是还在寻找一个靠谱的线上接单平台&#xff1f;那这几个平台你可要收藏好了&#xff01; NO.1开源众…

axios get请求不能通过body 数据json数据

axios get请求不能通过 body 传递数据&#xff0c;只能用query的方式&#xff0c;post请求传递参数用的是data这个字段&#xff0c;但是看官方文档 Request Config | Axios Docs

一个虚拟机管理器(VMM)的实现

虚拟机管理器又名虚拟机管理程序、虚拟机监控程序、VMM。它使用虚拟化技术&#xff0c;将一台物理机虚拟化为多台虚拟机&#xff0c;每台虚拟机都可以独立一个操作系统。其背后的原理也很简单&#xff0c;它就是一个应用程序&#xff0c;模拟了硬件所提供的功能&#xff0c;比如…

虹科分享 | 赋能物流机器人:CANopen通信如何发挥重要作用?

现代物流领域迅速融入了技术进步&#xff0c;特别是随着自主机器人的兴起&#xff0c;这一趋势越发明显。确保这些机器人在复杂的仓库环境中精确运行的一个关键方面是CANopen通信协议。该协议集成了各种组件&#xff08;电机、传感器、摄像头和先进的电池系统&#xff09;&…