Android 设置 bottomnavigation 底部导航栏的样式

学习笔记

1. 设置 BottomNavigationView 样式

你可以通过定义一个自定义的样式来调整 BottomNavigationView 的外观。可以在 res/values/styles.xml 文件中创建样式,或者直接使用默认样式并进行修改。

例子:设置 BottomNavigationView 的背景色和图标颜色

首先,确保你有一个 styles.xml 文件,然后创建一个新的样式文件来定制 BottomNavigationView

 
<resources><!-- 自定义 BottomNavigationView 样式 --><style name="CustomBottomNavStyle" parent="Widget.MaterialComponents.BottomNavigationView"><!-- 设置背景色 --><item name="android:background">@color/bottom_nav_background</item><!-- 设置选中项的颜色 --><item name="itemIconTint">@color/bottom_nav_item_icon</item><item name="itemTextColor">@color/bottom_nav_item_text</item><!-- 设置选中项的高亮色 --><item name="itemActiveIndicatorStyle">@style/BottomNavActiveIndicator</item></style><!-- 选中项的颜色(例如,蓝色) --><color name="bottom_nav_item_icon">#2196F3</color><color name="bottom_nav_item_text">#2196F3</color><color name="bottom_nav_background">#ffffff</color>
</resources>

然后,在你的布局文件 activity_main.xml 中使用这个样式:

 
<com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomnavigation_main"android:layout_width="match_parent"android:layout_height="wrap_content"app:menu="@menu/bottom"style="@style/CustomBottomNavStyle" />

2. 设置 BottomNavigationView 的显示方式

  • 固定 (Fixed):当 BottomNavigationView 需要显示所有菜单项时,可以将 android:menu 属性设置为你的菜单文件,然后直接显示菜单项。

     
    <com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomnavigation_main"android:layout_width="match_parent"android:layout_height="wrap_content"app:menu="@menu/bottom" />
    

  • 滚动模式 (Shifted):如果菜单项太多时,可以启用滚动模式。滚动模式允许显示的项目根据容器的宽度变化。这通常是默认的行为,不需要做特别的设置。

3. 设置 BottomNavigationView 的 item 动画(例如,添加高亮效果)

可以通过 itemIconTintitemTextColor 属性来自定义未选中和选中状态下图标和文本的颜色。

 
<com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomnavigation_main"android:layout_width="match_parent"android:layout_height="wrap_content"app:menu="@menu/bottom"app:itemIconTint="@drawable/nav_item_icon_tint"app:itemTextColor="@drawable/nav_item_text_color"app:itemRippleColor="@android:color/transparent" />

res/drawable/ 文件夹下,可以创建一个 nav_item_icon_tint.xml 来指定颜色选择器。

 
<!-- res/drawable/nav_item_icon_tint.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="@color/colorPrimary" android:state_checked="true"/><item android:color="@android:color/darker_gray"/>
</selector>

4. 设置 BottomNavigationView 的布局行为

你还可以通过 ViewPager2BottomNavigationView 来协调视图。通过监听 BottomNavigationView 的选择事件,切换 ViewPager2 的页面。

 
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomnavigation_main);
ViewPager2 viewPager2 = findViewById(R.id.viewpager2_main);// 设置 ViewPager2 的适配器
viewPager2.setAdapter(new YourPagerAdapter());bottomNavigationView.setOnNavigationItemSelectedListener(item -> {switch (item.getItemId()) {case R.id.menu_home:viewPager2.setCurrentItem(0);return true;case R.id.menu_search:viewPager2.setCurrentItem(1);return true;case R.id.menu_profile:viewPager2.setCurrentItem(2);return true;default:return false;}
});

总结

  1. 样式自定义:通过 styles.xml 文件自定义 BottomNavigationView 的外观,包括背景色、图标颜色、选中文本颜色等。
  2. 显示方式:可以使用固定(显示所有菜单项)或滚动模式来显示 BottomNavigationView 的菜单项。
  3. 与 ViewPager2 结合:通过 OnNavigationItemSelectedListener 来监听菜单项选择,并在 ViewPager2 中切换页面。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络socket编程(4)_TCP socket API 详解

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络socket编程(4)_TCP socket API 详解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&…

Jmeter数据库压测之达梦数据库的配置方法

目录 1、概述 2、测试环境 3、数据库压测配置 3.1 安装jmeter 3.2 选择语言 3.3 新建测试计划 3.4 配置JDBC连接池 3.5 配置线程组 3.6 配置测试报告 3.7 执行测试 1、概述 Jmeter是Apache组织开发的基于Java的压力测试工具&#xff0c;用于对软件做压力测试。 它最…

RAG与微调:大模型落地的最佳路径选择(文末赠书)

一、大模型技术发展现状 自2022年底ChatGPT掀起AI革命以来&#xff0c;大语言模型&#xff08;LLM&#xff09;技术快速迭代发展&#xff0c;从GPT-4到Claude 2&#xff0c;从文心一言到通义千问&#xff0c;大模型技术以惊人的速度发展。然而&#xff0c;在企业实际应用场景中…

Web 入门

HTTP 一、概念 Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 二、特点 基于TCP协议&#xff1a;面向连接&#xff0c;安全。基于请求-响应模型的&#xff1a;一次请求对应一次响应。HTTP协议是无状态的协…

pinia是什么?pinia简介快速入门,创建pinia到vue3项目中

一&#xff0c;pinia就是Vuex&#xff0c;的替代工具&#xff0c;Vuex plus 如何将pinia引入到vue3项目中&#xff1f; 1.首先新建一个vue3项目 全填yes npm init vuelatest 2.安装好之后查阅官方文档 pinia使用文档 3.从而得知在项目中有俩种方式安装pinia 我的本地只有nod…

Java 基于SpringBoot+vue框架的老年医疗保健网站

大家好&#xff0c;我是Java徐师兄&#xff0c;今天为大家带来的是Java Java 基于SpringBootvue框架的老年医疗保健网站。该系统采用 Java 语言开发&#xff0c;SpringBoot 框架&#xff0c;MySql 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强 &#xff0c;可供大…

FPGA实现串口升级及MultiBoot(九)BPI FLASH相关实例演示

本文目录索引 区别一:启动流程的区别区别二:高位地址处理区别三:地址映射例程说明总结例程地址之前一直都是以SPI FLASH为例进行相关知识讲解,今天我们介绍另一款常用的配置FLASH-BPI FLASH。 今天的讲解以简洁为主,主打个能用一句话不说两句话。以和SPI区别为主,实例演…

VisionPro 机器视觉案例 之 彩色保险丝个数统计

第十四篇 机器视觉案例 之 彩色保险丝颜色识别个数统计 文章目录 第十四篇 机器视觉案例 之 彩色保险丝颜色识别个数统计1.案例要求2.实现思路2.1 方法一 颜色分离工具CogColorSegmenterTool将每一种颜色分离出来&#xff0c;得到对应的单独图像&#xff0c;使用斑点工具CogBlo…

实时数据研发 | Flink技术栈

下周要开始接触一些实时的内容了&#xff0c;想来是很幸运的&#xff0c;这是我在新人培训上提问过技术前辈的问题&#xff1a;“想学习实时相关技术&#xff0c;但是部门没有类似的需求&#xff0c;应该如何提升&#xff1f;”当时师姐说先用心去学&#xff0c;然后向主管证明…

Spring cloud 一.Consul服务注册与发现(4)

1.动态刷新案例步骤 1.问题 接着上一步,我们在consul的dev配置分支修改了内容马上访问,结果无效 会发现还是原来的内容&#xff0c;/(ㄒoㄒ)/~~ &#xff0c;没有做到及时响应和动态刷新 2.步骤 RefreshScope主启动类添加 package com.atguigu.cloud;import org.springfram…

石油化工调度台的外观如何设计更有科技感

在石油化工行业中&#xff0c;调度台作为生产运营的核心指挥中枢&#xff0c;其设计不仅关乎操作效率&#xff0c;更是企业形象和技术实力的体现。那么&#xff0c;到底如何在调度台的外观设计中融入科技感&#xff0c;以提升工作效率并彰显企业前沿形象&#xff0c;成为了一个…

【机器学习】——朴素贝叶斯模型

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

如何使用Jest测试你的React组件

在本文中&#xff0c;我们将了解如何使用Jest&#xff08;Facebook 维护的一个测试框架&#xff09;来测试我们的React组件。我们将首先了解如何在纯 JavaScript 函数上使用 Jest&#xff0c;然后再了解它提供的一些开箱即用的功能&#xff0c;这些功能专门用于使测试 React 应…

Stm32f103X HAL库 串口DMA空闲中断学习 踩坑记

捡 了一个Stm32f103X的工控板, 开发工具是 STM32cubeide ,复制了之前闲的时候建的一个485通讯的空工程&#xff0c;只配置了圈中的引脚,用的是usart3 ,增加了需要用的io,编程器是网上几块钱买的jlink-ob,带模拟串口的. 在学习串口通信的过程中总感觉不太顺利 ,刚开始用串口中断…

云服务器部署WebSocket项目

WebSocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;其设计的目的是在Web浏览器和Web服务器之间进行实时通信&#xff08;实时Web&#xff09; WebSocket协议的优点包括&#xff1a; 1. 更高效的网络利用率&#xff1a;与HTTP相比&#xff0c;WebSocket的握手只…

PDF内容提取,MinerU使用

准备环境 # python 3.10 python3 -m pip install huggingface_hub python3 -m pip install modelscope python3 -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com下载需要的模型 import json import osimport requests from huggingface_hub…

掌握 Spring 事务管理:深入理解 @Transactional 注解

在业务方法上使用Transactional开启声明式事务时&#xff0c;很有可能由于使用方式有误&#xff0c;导致事务没有生效。 环境准备 表结构 CREATE TABLE admin (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,password varchar(255) …

设计模式之 观察者模式

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听一个主题对象&#xff08;Subject&#xff09;。当主题对象的状态发生变化时&#xff0c;所有依赖于它的观察者都会得到…

【python】将word文档内容转换为excel表格

在日常工作中&#xff0c;我们经常需要将Word文档中的内容提取并转换为Excel表格&#xff0c;以便进行数据分析和处理。本文将介绍如何使用Python编写一个简单的程序&#xff0c;将Word文档中的内容转换为Excel表格。 一.实例 使用以下word文档作为例子&#xff1a; 工具界面如…

Linux|进程程序替换

目录 什么是进程替换 替换原理 exec函数 exec* 函数的共性 什么是进程替换 进程程序替换是指将一个进程中正在运行的程序替换为另一个全新的程序的过程&#xff0c;但替换不是创建新进程&#xff0c;只是将对应程序的代码和数据进行替换。具体来说&#xff0c;这个替换过程涉…