有小伙伴问到我BottomNavigationView底部导航的问题,分享一下,底部导航栏的使用比较常见,目前常用的APP几乎都是使用底部导航栏将内容分类。

这个Android 的底部导航栏 BottomNavigationView由Google官方推荐的,

先来看看案例效果图

打入依赖:

implementation "com.google.android.material:material:1.0.0"

布局:

<com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/navigation"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/white"app:labelVisibilityMode="labeled"app:menu="@menu/main_bnv" />

app:menu :引用菜单布局

代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"tools:showIn="bottom_navigation_view"><itemandroid:id="@+id/menu_mail"android:icon="@drawable/ic_bottom_mail"android:title="@string/book_mail"/><itemandroid:id="@+id/menu_bookshelf"android:icon="@drawable/ic_bottom_books"android:title="@string/book_shelf" /><itemandroid:id="@+id/menu_my_config"android:icon="@drawable/ic_bottom_person"android:title="@string/my" />
</menu>

icon的值:(选中和未选中设置的图标)

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

点击事件之后走的方法

navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull @NotNull MenuItem menuItem) {if (menuItem.getItemId() == R.id.menu_mail){viewpager2.setCurrentItem(0);}else if (menuItem.getItemId() == R.id.menu_bookshelf){viewpager2.setCurrentItem(1);}else if (menuItem.getItemId() == R.id.menu_my_config){viewpager2.setCurrentItem(2);}return false;}});

默认选中的话字体会变大

效果图:

那么如何让它不变呢? 则需要设置这两个属性

  app:itemTextAppearanceActive="@style/bottom_selected_text"app:itemTextAppearanceInactive="@style/bottom_normal_text"

xml

<!--未选中的样式--><style name="bottom_normal_text"><item name="android:textColor">#222222</item><item name="android:textSize">12sp</item></style><!--选中的样式--><style name="bottom_selected_text"><item name="android:textColor">@color/colorPrimaryDark</item><item name="android:textSize">12sp</item></style>

这样就设置底部的选中和未选中的字体样式了,字体颜色也可以选择相应的来设置了

还有一个属性,选中的tab不要让图标变大

app:labelVisibilityMode="labeled"

看法发现了一个东西,点击的时候背景有一个水波纹动画,如何去除这个动画呢?

app:itemBackground="@null"

这样就ok了

点击响应的方法

 navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull @NotNull MenuItem menuItem) {return false;}});

完整的布局

 <com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/navigation"android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/white"app:labelVisibilityMode="labeled"app:itemTextAppearanceActive="@style/bottom_selected_text"app:itemTextAppearanceInactive="@style/bottom_normal_text"app:itemBackground="@null"app:menu="@menu/main_bnv" />

下一篇博客说说: BottomNavigationView与ViewPager1+ViewPager2的使用

Android ------ ViewPager1和ViewPager2的使用

官方文档:

BottomNavigationView  |  Android Developers

Android ------ Android X 的BottomNavigationView底部导航栏相关推荐

  1. android自定义底部中间突出导航栏,Android选中突出背景效果的底部导航栏功能

    今天在群里看到一个底部导航选中突出效果像这样 就想着 这个应该怎么做呢,我记得类似咸鱼那种的是中间突出,不像这种 是选中哪个,哪个就突出 第一种方法 简单快捷,让UI帮忙切几张带突出背景的图片, 选中 ...

  2. android开发时华为手机底部导航栏挡住了应用布局

    原因:使用安卓的BottomNavigationView控件开发底部导航栏同时使用了沉浸式状态栏导致华为手机的底部导航栏会盖住我应用的导航栏. 解决:先写一个工具类 import android.co ...

  3. android radiobutton底部导航,android中Fragment+RadioButton实现底部导航栏

    在App中经常看到这样的tab底部导航栏 那么这种效果是如何实现,实现的方式有很多种,最常见的就是使用Fragment+RadioButton去实现.下面我们来写一个例子 首先我们先在activity ...

  4. android获取刘海屏状态栏高度,Android刘海屏全面屏底部导航栏的适配

    关于Android状态栏和虚拟导航栏的适配,文章:https://blog.csdn.net/leogentleman/article/details/54566319 讲的很不错. 状态栏的适配: ...

  5. 在android Studio中设计app的底部导航栏

    准备工作 新建一个空白android项目 命名为csdn 在res/layout路径下设置主页面 使用线性布局 linearLayout 使用自定义的viewPager(切换多个页面会秒跳转,提升体验 ...

  6. android底部导航栏选中动画,Android选中突出背景效果的底部导航栏功能

    今天在群里看到一个底部导航选中突出效果像这样 就想着 这个应该怎么做呢,我记得类似咸鱼那种的是中间突出,不像这种 是选中哪个,哪个就突出 第一种方法 简单快捷,让UI帮忙切几张带突出背景的图片, 选中 ...

  7. Android商城开发--实现商城底部导航栏

    让我们先看效果图: 图一是默认效果图,图二是点击首页的效果图(图标和字体颜色会变化)            接下来是实现方法 1.先写布局. 我新建了一个ShoppingActivity,在activ ...

  8. Android 泽宇三种底部导航栏

    compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.0.8@aar'//底部导航 <com.flyco.tablayout.CommonTabLa ...

  9. 简书 android底部导航,Android BottomNavigationView底部导航栏的使用

    基础使用 先导入依赖(这里以AndroidX为例) implementation 'com.google.android.material:material:1.0.0' 在布局中使用 android ...

最新文章

  1. 【JUC并发编程05】集合的线程安全
  2. C51单片机各种名词英文全称汇总
  3. GDCM:dicom文件转储签证变更的测试程序
  4. IE6PNG8PNG24test
  5. C语言查看文件fp指针位置
  6. java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal问题解决
  7. JS switch 分支语句
  8. Bailian3751 地质考察队【最值】
  9. 最短路—Johnson算法(解决负权边,判断负权环)
  10. 期货量化交易matlab,【策略分享】Matlab量化交易策略源码分享
  11. Xprivacy - 必须拥有黑客应用程序
  12. 双十一,一群金融大脑去了趟苏州!
  13. [论文总结] 种群、保护与生态遗传学笔记
  14. 一维地震子波合成记录c语言,地震子波波形显示及一维地震合成记录
  15. Elance新手入门
  16. 子集生成(二进制法,逐步生成,递归增量)
  17. Linux下安装matlab
  18. 安卓通讯录管理软件_细说|安卓系统50个你不知道的使用窍门!每个都值得你去收藏!...
  19. python爬取表情包,并下载到本地
  20. 谷歌6P android o,谷歌Nexus 6P Android O刷机包

热门文章

  1. Lazada收款方式是对接P卡好还是WF卡好?
  2. 升级 phpStudy 中 MySQL 版本
  3. Cesium案例解析(四)——3DModels模型加载
  4. CREATE TABLE 时的 SQL UNIQUE 约束
  5. 计算机网络知识点总结(计网期末盲押系列)
  6. SpringBoot高级_与安全
  7. 刷脸支付不需要掏手机扫码很是方便
  8. 展讯平台sysdump解析
  9. CKeditor配置大全
  10. 可重复读隔离级别如何解决脏读、不可重复读