Android BottomNavigationView的属性设置

2023-11-04

底部导航栏通常是每个item由一个icon和title组成的,然后再控制下是否点击的状态即可。当然也可以使用官方在support包内提供的BottomNavigationView来实现,于简单的需求来说,使用BottomNavigationView来实现,还是比较方便的。

先给出两张的差别:

未设置属性:
在这里插入图片描述
有设置属性:
在这里插入图片描述

BottomNavigationView的使用方法

在layout中引用:

<android.support.design.widget.BottomNavigationView
     android:id="@+id/bnv"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@color/white"
     app:labelVisibilityMode="labeled"
     app:menu="@menu/navigation" />

1、实现tab按下的图标切换

menu文件下的navigation.xml(没有就新建)定义几个tab,如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_main_bottom_mall"
        android:icon="@mipmap/ic_launcher"
        android:title="首页" />
    <item
        android:id="@+id/menu_main_bottom_bbs"
        android:icon="@mipmap/ic_launcher"
        android:title="订货" />
    <item
        android:id="@+id/menu_main_bottom_shop_car"
        android:icon="@mipmap/ic_launcher"
        android:title="社区" />
    <item
        android:id="@+id/menu_main_bottom_me"
        android:icon="@mipmap/ic_launcher"
        android:title="个人中心" />
</menu>

这里也可以自定义tab的图标切换,在drawable下定义一个selector,然后修改icon

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/nav_cm_s" android:state_checked="true" />
    <item android:drawable="@mipmap/nav_cm_d" android:state_checked="false" />
</selector>

修改完成后,但是选中的图标并不符合刚刚情况,为什么?
因为这里的图标要求比较严格,必须是镂空的,不能自定义颜色.。
因为会有tint,所以所有不镂空的地方都会变成统一的tint颜色。
调用BottomNavigationView的setItemIconTintList(null) 即可解决

2、选中的tab不要让图标变大

在layout布局中设置

 app:labelVisibilityMode="labeled"

3、选中的tab字体会变大

在dimens.xml中覆盖其默认值

<dimen name="design_bottom_navigation_text_size" tools:override="true">14sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">14sp</dimen>

4、设置tab的字体颜色切换

其中colors数组第一个是未选色,第二个是选中色,在代码中设置如下:

 int[][] states = new int[][]{
        new int[]{-android.R.attr.state_checked},
        new int[]{android.R.attr.state_checked}
};
int[] colors = new int[]{getResources().getColor(R.color.color_C3C3C3),
        getResources().getColor(R.color.colorPrimary)
};
ColorStateList csl = new ColorStateList(states, colors);
mBottomNavigationView.setItemTextColor(csl);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android BottomNavigationView的属性设置 的相关文章

随机推荐

  • Java中if-else和switch-case

    计算机的任何简单或复杂的程序都可以由三种基本结构组成 顺序结构 按照程序编写的顺序 从上到下依次执行 选择结构 根据某个条件进行判断后 选择其中一个分支执行 循环结构 反复执行某个或某些操作 直到条件为假时才停止循环 条件判断结构 1 if
  • CSS命名规范——BEM思想(非常赞的规范)

    人们问我最多的问题之一是在CSS类名中 和 是什么意思 它们的出现是源于BEM和Nicolas Gallagher BEM的意思就是块 block 元素 element 修饰符 modifier 是由Yandex团队提出的一种前端命名方法论
  • 软件研发过程中的5种最常见的图

    一 背景 软件研发过程中 我们常有如下的困惑 有时我们需要设计一个较大型的业务系统 或者做一个开源项目 我们该如何将这个系统的整体功能 逻辑细节一层层描述清楚呢 我们接手了一个大型复杂的系统 该如何一点点从宏观到微观的去梳理整个功能流转的脉
  • Apache APISIX Dashboard 任意命令执行批量编写工具

    Apache APISIX Dashboard远程命令执行漏洞 CVE 2021 45232 漏洞描述 Apache APISIX 是一个动态 实时 高性能的 API 网关 提供负载均衡 动态上游 灰度发布 服务熔断 身份认证 可观测性等丰
  • Verilog 层次化文件设计——彩灯控制器

    Verilog 层次化文件设计是通过顶层文件 调用的子模块来完成代码功能的实现 这里的顶层文件可以理解为是实体电路中的连线步骤 而子模块就是电路元件 本文采用文本形式编写顶层文件 设置顶层文件先打开文件界面显示所有文件 再选择你要设置为顶层
  • 第四十章、PyQt显示部件:QGraphicsView图形视图和QGraphicsScene图形场景简介及应用案例

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 概述 Designer中的Graphics View部件是个图形视图部件 对应类为QG
  • 使用Tor遇到的错误

    Tor 在启动期间退出 这可能是您的 torrc 文件存在错误 Tor 或系统其他程序存在问题 或者硬件问题 在您解决此问题并重新启动 Tor 前 Tor 浏览器将不会启动 答 Windows安装Tor后 会在桌面留下文件夹 Tor 删除后
  • 金士顿 DT101 G2 8GU盘量产全过程图解(群联篇)(2)

    首先用芯片无忧或群联量产工具版本选择查看器 APExample getinfo 读出U盘的 MP ver 固件版本 固件日期 版本 控制芯片制造商是群联 芯片型号为ps2250 以便正确选择使用的量产工具 如下图1 这是从群联量产工具版本选
  • CVE-2021-41773漏洞复现

    1 安装debian系统 首先我选择的系统是debian10版本 也可以在别的系统完成复现 我想一个纯净版 所有重新安装了一个系统 安装步骤简单展示一下 1 创建虚拟机 点击下一步 导入镜像 自己选安装的位置以及虚拟机的名称 安装过程需要设
  • sql语句合集大全(个人总结)

    查找emp表 select from emp 查找emp表的sal select a SAL from emp a 查找emp表的ename select a ename from emp a emp表的sal 10 select a SA
  • 六大设计原则--迪米特法则【Low Of Demeter】

    声明 本文内容是从网络书籍整理而来 并非原创 定义 迪米特法则也叫做最少知识原则 Least Knowledge Principle 指一个对象应该对其他对象有最少的了解 通俗的讲 一个类对自己需要耦合或者调用的类应该知道的最少 你类内部是
  • idea打包springboot项目并部署至服务器

    idea打包springboot项目并部署至服务器 Step1 如果项目没有webapp或web目录 Step2 将springboot导成jar包 Step3 将springboot部署至云服务器 Step1 如果项目没有webapp或w
  • GCP: AppEngine(GAE)的使用

    一 基本概念 在全托管式的无服务器平台上构建可扩缩性极强的应用 将应用从零无缝扩容到全球级规模 而不用费心管理底层基础架构 得益于零服务器管理和零配置部署 开发者可以专注于构建出色的应用 省去管理开销 App Engine 支持多种主流开发
  • 使用ab进行并发压测SSL read failed (5) - closing connection错误

    最近在进行并发压测 在c参数特别大的时候 测试过程中出现SSL read failed 5 closing connection错误 研究好久没有找到瓶颈 但在换了一台测试服务器后 这个问题没有出现 所以基本可以确定是测试服务器产生的瓶颈
  • Java中整型数据的进制书写

    问题描述 我觉得这是一个比较有趣的事情 我觉得大多数初学者在编程过程中都不会在源代码里用除了十进制的其它进制写常量 但是当我在做leetcode的 回文数字 一题时 写了个测试样例 以为int 0343可以被识别为343 从而被识别成回文数
  • combo 添加listeners,使用 initComponent、constructor 的区别

    LocationCombo Ext extend Ext form ComboBox initComponent function var config name loactionCombo hiddenName loactionCombo
  • Unity 使用Final IK实现拟真调整物体IK动画

    文章目录 IK部分 需求 何为IK 参考资料 Final IK概述 手部IK效果 IK交互 拿取与双手调整效果 演示视频 IK部分 需求 NPC拿起物体 指定转向放到指定位置 要求动作尽可能自然 贴近真实 何为IK 谈IK之前先讲一下正向运
  • 【计算机网络】数据链路层(二):差错检测和纠正

    帧同步虽然可以区分每个数据帧的起始和结束 但是还没有解决数据正确传输的两方面问题 一 如果有帧出现了错误 二 如果有帧丢失了 这都是数据链路层确保向网络层提供可靠数据传输服务解决的问题 也就是数据链路层的差错控制功能 要实现差错控制功能 就
  • 0、Spring工程构建&Spring快速入门&Spring配置文件详解&注入&Sprint相关API

    1 Spring工程构建 创建工程项目目录文件夹 IDEA选择项目new一个module 配置案例 aop创建 创建并下载完毕后 点击file选择projert 选择按照的jdk版本 output选择当前目录 点击右下方apply 选择fa
  • Android BottomNavigationView的属性设置

    底部导航栏通常是每个item由一个icon和title组成的 然后再控制下是否点击的状态即可 当然也可以使用官方在support包内提供的BottomNavigationView来实现 于简单的需求来说 使用BottomNavigation