系列文章目录

Android关于BottomNavigationView效果实现指南


老规矩,文中/文末会放置源码

文章目录

  • 系列文章目录
  • 前言
  • 一、初识BottomNavigationView
  • 二、BottomNavigationView中的颜色关键实现代码解析(举例)
    • 是如何定义的颜色的。
  • 三、开始解决问题
    • 1.如何修改图标颜色
    • 2.如何使图标点击颜色不改变
    • 3.如何使点击时字体不改变大小
    • 4.当你的图标是多色系时
    • 5.不想要ActionBar
  • 四、总结

前言

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


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

一、初识BottomNavigationView

在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"><itemandroid:id="@+id/navigation_home"android:icon="@drawable/ic_home"android:title="@string/title_home" /><itemandroid:id="@+id/navigation_dashboard"android:icon="@drawable/ic_dashboard_black_24dp"android:title="@string/title_dashboard" /><itemandroid: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效果实现指南相关推荐

  1. 我的Android进阶之旅------gt;Android APP终极瘦身指南

    首先声明,下面文字转载于: APK瘦身实践 http://www.jayfeng.com/2015/12/29/APK%E7%98%A6%E8%BA%AB%E5%AE%9E%E8%B7%B5/ APP ...

  2. Android P应用适配相关指南

    Android P应用适配相关指南 文章目录 Android P应用适配相关指南 一 Android P适配指导 二 刘海屏适配指导 三 Crypto JCA 提供程序已被移除,弃用 Bouncy C ...

  3. Android 动画 Animator 家族使用指南

    零.前言:本文知识点 ValueAnimator的认识与使用 估值器TypeEvaluator的自定义与使用 插值器TimeInterpolator的自定义与使用 Path与Animator的结合使用 ...

  4. Android动画Animator家族使用指南

    零.前言:本文知识点 ValueAnimator的认识与使用 估值器TypeEvaluator的自定义与使用 插值器TimeInterpolator的自定义与使用 Path于Animator的结合使用 ...

  5. android 下拉窗帘,Android 窗帘(Curtain)效果二之波浪式动态扭曲效果

    上一篇文章已经实现了如何把一张图片扭曲成波浪效果,那么这一篇文章我们介绍如何动态调整系数,去改变波浪图片的皱褶成度.我们自一次观察下图morning routine的效果: 仔细观察我们发现,当往右滑 ...

  6. Android m 自定义下拉菜单,Android实现动画效果的自定义下拉菜单功能

    我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...

  7. android 卡片旋转动画,Android 卡片翻转效果

    Android 卡片翻转效果使用的Cramre来完成 记录一下: 一个好用的3D旋转工具类 oid.graphics.Matrix; import android.util.Log; import a ...

  8. 【Android源代码下载】收集整理android界面UI效果源码

    在Android开发中,Android界面UI效果设计一直都是很多童鞋关注的问题,今天给大家分享下大神收集整理的多个android界面UI效果,都是源码,都是干货,贡献给各位网友! 话不多说,直接上效 ...

  9. android 动态创建view,react-native动态创建Android View 无效果

    问题描述 react-native动态创建Android View 无效果,我想在react-native里面直接点击函数进行创建,也就是通过module中的方法创建View 问题出现的环境背景及自己 ...

  10. Android设计原则及规范指南!UI设计师值得一看!

    现在的Android手机界面样式千差万别,因为手机厂商都有自己独立的一套主题系统,不同品牌的Android手机主题和交互方式也有很大的区别. Android的界面设计中控件主要包括按钮.卡片.对话框. ...

最新文章

  1. node更新到最新版本_云顶之弈10.24版本临时更新永恩、劫大砍,最新上分阵容推荐...
  2. C#操作Excel(读取)
  3. 【Android】进程
  4. 深度思考|TCP协议存在那些缺陷?
  5. java setr()_Java RPr.setRFonts方法代码示例
  6. 跨越适配性能那道坎,企鹅电竞Android weex优化
  7. could not find driver
  8. BZOJ3097Hash Killer I
  9. linux spec cpu,SPEC CPU2006的安装和使用
  10. 空气炸锅如何挑选研究
  11. 在线学习算法FTRL基本原理
  12. java苞子_由菌丝末端形成的一种囊状结构的孢子称为
  13. 基于1939协议的发动机控制程序:包括发动机转速油门控制,发动机常用转速、机油压力、水温、工作小时读取,spn故障码取,发动机启动转速保护
  14. getTime()得到时间戳不一样
  15. java输入长和宽输出面积_用Java实现计算矩形的面积与周长
  16. 【daisy-framework】SpringBoot+MyBatis+Druid 多数据源
  17. 毕业设计 基于51单片机的电子秤设计(源码+硬件+论文)
  18. 一个 TV app 的直播节目实例,包含各央视频道及卫视频道
  19. unity2d游戏独立开发全流程 第一节 基于TileMap场景搭建
  20. 业内人士称游资3年前开始准备炒作糖价

热门文章

  1. 安装11.2.0.3时,OUI的log报错:OUI-10066:Not All The Dependencies For The Component ... Could Be Found
  2. 系统之家xp服务器系统怎么安装,系统之家教你如何用u盘装xp系统
  3. android获取连接wifi名称,Android开发:获取手机当前连接的WiFi名称
  4. 把图片背景变透明(制作签名档)
  5. 国家终于对流氓APP进行管制了
  6. GitHub、Apache 等平台开源项目,受美国出口管制么?
  7. Kafka工具--雅虎CMAK
  8. windows7蓝牙怎么打开_windwos7系统怎么添加蓝牙鼠标
  9. Sybase ASE 12.5.4数据库安装备份还原操作步骤
  10. TM4C123GLaunchPad教程四_时钟配置