返回顶部
首页 > 资讯 > 移动开发 >Android关于BottomNavigationView使用指南
  • 240
分享到

Android关于BottomNavigationView使用指南

2024-04-02 19:04:59 240人浏览 安东尼
摘要

目录前言一、初识BottomNavigationView二、BottomNavigationView中的颜色关键实现代码解析(举例)三、开始解决问题1.如何修改图标颜色2.如何使图标

前言

好久不见,计蒙回来了,最近有粉丝投稿了几个关于BottomNavigationView的一些问题,今天发篇比较详细的文章总结一下,希望能够对你有所帮助。

提示:以下是本篇文章正文内容,下面案例可供参考

一、初识BottomNavigationView

常用属性:

  • app:itemTextColor 文字的颜色,可以通过selector来控制选中和未选中的颜色

  • app:itemIconTint 图标的颜色,可以通过selector来控制选中和未选中的颜色

  • app:itemIconSize 图标大小,默认24dp

  • app:iteamBackground 背景颜色,默认是主题的颜色

  • app:itemRippleColor 点击后的水波纹颜色

  • app:itemTextAppearanceActive 设置选中时文字样式

  • app:itemTextAppearanceInactive 设置默认的文字样式

  • app:itemHorizontalTranslationEnabled 在label visibility 模式为selected时item水平方向移动

  • app:elevation 控制控件顶部的阴影

  • app:labelVisibilityMode 文字的显示模式

  • app:menu 指定菜单xml文件(文字和图片都写在这个里面)

Android Studio创建新项目时,会有很多小伙伴在模块中选择此类型的Activity,如下。

请添加图片描述

项目运行效果图如下:

请添加图片描述

二、BottomNavigationView中的颜色关键实现代码解析(举例)

是如何定义的颜色的。

关键代码如下(获取xml中的属性):

 ColorStateList backgroundTint =
        MaterialResources.getColorStateList(
            context, a, R.styleable.BottomNavigationView_backgroundTint);
    DrawableCompat.setTintList(getBackground().mutate(), backgroundTint);

    setLabelVisibilityMode(
        a.getInteger(
            R.styleable.BottomNavigationView_labelVisibilityMode,
            LabelVisibilityMode.LABEL_VISIBILITY_AUTO));
    setItemHorizontalTranslationEnabled(
        a.getBoolean(R.styleable.BottomNavigationView_itemHorizontalTranslationEnabled, true));

    int itemBackground = a.getResourceId(R.styleable.BottomNavigationView_itemBackground, 0);
    if (itemBackground != 0) {
      menuView.setItemBackgroundRes(itemBackground);
    } else {
      ColorStateList itemRippleColor =
          MaterialResources.getColorStateList(
              context, a, R.styleable.BottomNavigationView_itemRippleColor);
      setItemRippleColor(itemRippleColor);
    }

可以很明显的看到起到关键作用的是ColorStateList,而处理好这个传入的参数即可解决颜色问题。

三、开始解决问题

1.如何修改图标颜色

这里提供两种解决方式
xml中解决
首先:新建一个selector_color文件,设置两种状态的颜色

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="Http://schemas.android.com/apk/res/android">
    <item android:color="#63F7DE" android:state_checked="true"  />
    <item android:color="@android:color/black" android:state_checked="false"/>
</selector>

然后在BottomNavigationView中调用此文件

app:itemIconTint="@color/selector_color"

java文件中解决:
传入一个自定义的ColorStateList。
并将其以参数传入view中

navView.setItemIconTintList();

2.如何使图标点击颜色不改变

在java中调用其setItemIconTintList,传参为空即可

navView.setItemIconTintList(null);

3.如何使点击时字体不改变大小

在dimens文件中设置以下两个的值为同一大小即可

    //防止字体出现变大效果
    <dimen name="design_bottom_navigation_active_text_size">10dp</dimen>
    <dimen name="design_bottom_navigation_text_size">10dp</dimen>

4.当你的图标是多色系时

在java中调用其setItemIconTintList,传参为空

navView.setItemIconTintList(null);

然后设置图片状态的item中drawable的选择,举例如下

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

最后在menu中调用此文件即可。举例文件名为:ic_home

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/title_dashboard" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications" />

</menu>

为了节省时间,只修改了第一个,效果如下

请添加图片描述

5.不想要ActionBar

1.将xml中paddingTop这行删除

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?attr/actionBarSize">

2.在java中将以下这行删除

NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

3.设置APP样式为NoActionBar

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

四、总结

到此这篇关于Android关于BottomNavigationView使用指南的文章就介绍到这了,更多相关Android BottomNavigationView内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android关于BottomNavigationView使用指南

本文链接: https://lsjlt.com/news/162288.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android关于BottomNavigationView使用指南
    目录前言一、初识BottomNavigationView二、BottomNavigationView中的颜色关键实现代码解析(举例)三、开始解决问题1.如何修改图标颜色2.如何使图标...
    99+
    2024-04-02
  • 关于远程调用RestTemplate的使用避坑指南
    目录一、前言介绍二、 问题记录1. 慎!【url参数中有json字符串】2. 慎!【url参数中有经过URLEncode的字符串】3. 慎!【url参数中存在特殊字符】 --- 针对...
    99+
    2024-04-02
  • Android中viewPager使用指南
    viewPager是谷歌官方提供的一种方便实现页面滑动效果的控件,可以直接使用也可以和fragment联合使用。这里只简单说下直接使用。  使用viewPager的步...
    99+
    2022-06-06
    viewpager Android
  • Android底部导航组件BottomNavigationView怎么使用
    本篇内容介绍了“Android底部导航组件BottomNavigationView怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Bo...
    99+
    2023-07-05
  • 关于Python 位运算防坑指南
    目录1、背景2、C# 语言3、Python 语言4、技术分析1、背景 我们先看这个题目: 标题:137. 只出现一次的数字 II 难度:中等 https://leetcode-cn...
    99+
    2024-04-02
  • android : 底部导航栏的实现(使用ViewPager和BottomNavigationView)
      本案例中需要用的控件ViewPager和BottomNavigationView ViewPager:主要是页面的切换Fragment:碎片(也就是每个页面的内容)BottomNavigationView:底部导航栏 非常简单,主要就...
    99+
    2023-09-01
    android android studio ide
  • 微服务网关SIA-GateWay使用指南
    一、DeskTopDeskTop展示当前注册的各个网关组,点击一个网关组将选中该网关组并跳转至首页。每个网关组包括如下四项:角色值:网关应用名前缀,用于区分网关组拥有实例:网关组实例个数网关状态:网关组当前状态网关描述:网关组描述信息,可修...
    99+
    2023-06-05
  • 关于MongoDB数据库学习路线指南
    学习路线 1、MongoDB数据库学习大纲 2、MongoDB数据格式 3、MongoDB数据库特点 4、MongoDB数据库应用场景 5、MongoDB数据库单节点部署 6、MongoDB数据库常用操作指令 ...
    99+
    2023-04-12
    MongoDB数据库 MongoDB学习路线
  • Android 2.3关于StrictMode使用教程
    StrictMode是Android平台提供的一个工具,用于帮助开发者检测和解决应用程序中的一些性能和稳定性问题。它可以帮助开发者发...
    99+
    2023-09-22
    Android
  • 关于Vue v-on指令的使用
    目录1、监听事件2、传入event参数3、事件修饰符案例1:阻止单击事件继续传播案例2:提交事件不再重载页面1、监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些...
    99+
    2024-04-02
  • 关于Mysql(MariaDB)的基本操作命令指南
    MYSQL基本命令操作 1.登录方法: mysql -u root -p 2.显示所有数据库: show databases; 3.操作指定数据库(以information_schema为例) use in...
    99+
    2024-04-02
  • 关于Ant-Design-Vue快速上手指南+排坑
    目录前言NO.1 表单组件如何自定义表单校验规则表单回显提交表单NO.2 表格(Table)NO.3 Spin组件打包优化结语前言 公司要开发一个后台管理系统,对于UI库的选择上选择...
    99+
    2024-04-02
  • postgresql 使用指南
    centos系列安装分为:yum安装源码安装一、yum安装按照官方的安装文档进行。安装postgresql官方yum仓库yum install https://download.postgresq...
    99+
    2024-04-02
  • FlexBuilder3使用指南
    FlexBuilder3是一款用于构建Flex应用程序的集成开发环境(IDE),以下是一份FlexBuilder3的使用指南:1. ...
    99+
    2023-09-05
    FlexBuilder3
  • Pysvn使用指南
    这是一篇关于pysvn模块的指南. 完整和详细的API请参考 http://pysvn.tigris.org/docs/pysvn_prog_ref.html pysvn是操作Sub...
    99+
    2023-02-20
    Pysvn 使用
  • Android性能测试工具APT使用指南
      腾讯的安卓平台高效的性能测试工具APT(Android Performance Testing Tools),适用于开发自测和定位性能瓶颈,帮助测试人员完成性能基准测试...
    99+
    2022-06-06
    apt 测试 Android
  • Android音视频开发之VideoView使用指南
    目录VideoView介绍MediaController使用源码分析进度显示播放尺寸适配VideoView介绍 之前介绍过使用MediaPlayer+SurfaceView实现播放视...
    99+
    2024-04-02
  • 关于Linux的curl指令使用总结
    目录Linucurl指令发送GET请求curl指令发送POST请求curl命令解读总结linux的curl指令使用 curl指令发送GET请求 格式如下: curl -H [header参数] -XGET URL 假设U...
    99+
    2023-04-03
    Linux的curl指令 curl指令使用 curl指令
  • 关于pygame自定义窗口创建及相关操作指南
    目录1.首先,我们需要导入几个相关模块2,初始化游戏3,创建窗口及标题4,创建主循环附:pygame 窗口无法正常关闭的解决方法总结1.首先,我们需要导入几个相关模块 import ...
    99+
    2024-04-02
  • MySQL kill指令使用指南
    KILL [CONNECTION | QUERY] processlist_id 在Mysql中每个连接都是单独线程运行,可以使用语句 KILL processlist_id statement.来终止语句执...
    99+
    2022-05-19
    MySQL kill指令 MySQL kill
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作