几行代码轻松实现底部导航栏(Tab 文字图片高度随意更改);

中间可添加加号按钮,也可添加文字;(足够的属性满足你需要实现的加号样式)

如果还不能满足、中间可添加自定义 View;

Tab 中随意添加小红点提示、数字消息提示;

点击按钮可跳转界面、也可作为 Tab 切换 Fragment;

2.0.+迁移 AndroidX、支持 ViewPager2;

剥离导航栏、不传 Fragment 则不会创建 ViewPager、可自行实现 ViewPager 使用 setupWithViewPager 方法与之关联;

支持仅图片、仅文字的方式.;

支持字体单位修改、SP 和 DP 切换;

支持红点消息大于 99、则显示椭圆可自定义背景颜色及角度;

更多使用参考简书;

效果图

实现

依赖

Step 1. Add it in your root build.gradle at the end of repositories:

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Step 2. Add the dependency

implementation 'com.github.Vincent7Wong:EasyNavigation:1.5.0'

//2.0.5 AndroidX 版本、支持 ViewPager2

implementation 'com.github.Vincent7Wong:EasyNavigation:2.0.5'

navigationBar.defaultSetting() //恢复默认配置、可用于重绘导航栏

.titleItems(tabText) // Tab 文字集合 只传文字则只显示文字

.normalIconItems(normalIcon) // Tab 未选中图标集合

.selectIconItems(selectIcon) // Tab 选中图标集合

.fragmentList(fragments) // fragment 集合

.fragmentManager(getSupportFragmentManager())

.iconSize(20) //Tab 图标大小

.tabTextSize(10) //Tab 文字大小

.tabTextTop(2) //Tab 文字距 Tab 图标的距离

.normalTextColor(Color.parseColor("#666666")) //Tab 未选中时字体颜色

.selectTextColor(Color.parseColor("#333333")) //Tab 选中时字体颜色

.scaleType(ImageView.ScaleType.CENTER_INSIDE) //同 ImageView 的 ScaleType

.navigationBackground(Color.parseColor("#80000000")) //导航栏背景色

.setOnTabClickListener(new EasyNavigationBar.OnTabClickListener() {

@Override

public boolean onTabSelectEvent(View view, int position) {

//Tab 点击事件 return true 页面不会切换

return false;

}

@Override

public boolean onTabReSelectEvent(View view, int position) {

//Tab 重复点击事件

return false;

}

})

.smoothScroll(false) //点击 Tab Viewpager 切换是否有动画

.canScroll(true) //Viewpager 能否左右滑动

.mode(EasyNavigationBar.NavigationMode.MODE_ADD) //默认 MODE_NORMAL 普通模式 //MODE_ADD 带加号模式

.centerTextStr("发现")

.centerImageRes(R.mipmap.add_image)

.centerIconSize(36) //中间加号图片的大小

.centerLayoutHeight(100) //包含加号的布局高度 背景透明 所以加号看起来突出一块

.navigationHeight(60) //导航栏高度

.lineHeight(10) //分割线高度 默认 1px

.lineColor(Color.parseColor("#ff0000"))

.centerLayoutRule(EasyNavigationBar.RULE_BOTTOM) //RULE_CENTER 加号居中 addLayoutHeight 调节位置 EasyNavigationBar.RULE_BOTTOM 加号在导航栏靠下

.centerLayoutBottomMargin(10) //加号到底部的距离

.hasPadding(true) //true ViewPager 布局在导航栏之上 false 有重叠

.hintPointLeft(-3) //调节提示红点的位置 hintPointLeft hintPointTop(看文档说明)

.hintPointTop(-3)

.hintPointSize(6) //提示红点的大小

.msgPointLeft(-10) //调节数字消息的位置 msgPointLeft msgPointTop(看文档说明)

.msgPointTop(-10)

.msgPointTextSize(9) //数字消息中字体大小

.msgPointSize(18) //数字消息红色背景的大小

.centerAlignBottom(true) //加号是否同 Tab 文字底部对齐 RULE_BOTTOM 时有效;

.centerTextTopMargin(50) //加号文字距离加号图片的距离

.centerTextSize(15) //加号文字大小

.centerNormalTextColor(Color.parseColor("#ff0000")) //加号文字未选中时字体颜色

.centerSelectTextColor(Color.parseColor("#00ff00")) //加号文字选中时字体颜色

.setMsgPointColor(Color.BLUE) //数字消息、红点背景颜色

.setMsgPointMoreRadius(5) //消息 99+角度半径

.setMsgPointMoreWidth(50) //消息 99+宽度

.setMsgPointMoreHeight(40) //消息 99+高度

.textSizeType(EasyNavigationBar.TextSizeType.TYPE_DP) //字体单位 建议使用 DP 可切换 SP

.setOnTabLoadListener(new EasyNavigationBar.OnTabLoadListener() { //Tab 加载完毕回调

@Override

public void onTabLoadCompleteEvent() {

navigationBar.setMsgPointCount(0, 7);

navigationBar.setMsgPointCount(1, 109);

navigationBar.setHintPoint(4, true);

}

})

//.setupWithViewPager() ViewPager 或 ViewPager2

.build();

更新

此版本较上一版本有很大更新、实现方式也调整了下、如有错误及时反馈

2.0.+迁移 AndroidX、支持 ViewPager2;

剥离导航栏、不传 Fragment 则不会创建 ViewPager、可自行实现 ViewPager 使用 setupWithViewPager 方法与之关联;

新增仅图片、仅文字的方式。titleItems 和 normalIconItems 不能同时为空。如果没有 titleItems、则仅显示图片,没有 normalIconItems 则仅显示文字,没有 selectIconItems 则 Tab 没有切换效果;

新增字体单位修改、SP 和 DP 切换;

新增红点消息大于 99、则显示椭圆可自定义背景颜色及角度;

修复控件宽度计算问题;

新增重复选择回调;

方法名字诸多修改;(中间 Tab 的相关属性由 add 改为 center/万分抱歉)

取消 Tab 点击动画

Demo

android加号底部导航栏,EasyNavigation Android 底部导航栏████几行代码实现 Tab 导航(随意定制加号,带红点消息提示) @codeKK Android开源站...相关推荐

  1. android 混音 源码,FFmpegAndroid android 端基于 FFmpeg 实现音频剪切、拼接、转码、混音、编解码;视频剪切、水印、截图、转码、编 @codeKK c开源站...

    android 端基于 FFmpeg 库的使用 添加编译 ffmpeg.shine.mp3lame.x264 源码的参考脚本 目前音视频相关处理: 音频剪切.拼接 音频混音 音频转码 音视频合成 音频 ...

  2. android堆内存解析,heapsnap HeapSnap 是一款针对 Android 进程堆内存进行追踪、定位,以便查出泄露位置的工具 @codeKK c开源站...

    1.HeapSnap 是什么 HeapSnap 是一个定位内存泄露的工具,适用于 Android 平台. 主要特性如下: 对系统负载低 不需要修改目标进程的源代码 支持 Andoroid 上的大多数 ...

  3. android差分升级原理,BigNews Android 增量更新框架差分包升级 @codeKK c开源站

    支持增量包/差分包/升级包 原理:在服务器端使用 bsdiff 工具将新老安装包的差异打包为一个体积较小的差分包/升级包,然后在 App 端通过 bspatch 工具(和 bsdiff 配套的)用差分 ...

  4. android 蓝牙耗电量,安卓Android BLE低功耗蓝牙接受数据详解 只需100行代码轻松搞定...

    做了一个安卓手机通过蓝牙获取电子秤的重量的Demo,在此写下以供大家参考和讨论. 先上代码,着急用的可以迅速参考,后面再写说明 我跳过了扫描过程,直接根据蓝牙设备地址进行连接,可以运行官方Demo来获 ...

  5. 第一行代码第一章——你的第一行Android代码

    第一行代码第一章-你的第一行Android代码 知识点目录 1.1 了解全貌--Android王国简介 * 1.1.1 Android系统架构 * 1.1.2 Android已发布的版本 * 1.1. ...

  6. 《第一行代码》 第一章:第一行Android代码

    1,Android系统架构 2,开发的四大组件 3,丰富的系统控件 Android 系统为开发者提供了丰富的系统控件,使得我们可以很轻松地编写出漂亮的界面.当然如果你品位比较高,不满足于系统自带的控件 ...

  7. 【Android】消息提示notification

    notification 1.notification消息提示 由Android系统来管理和维护的,因此用户可以随时进入查看.某些信息不需要用户马上处理,可以利用通知,即延迟消息,比如软件的更新.短信 ...

  8. android studio生命周期代码,Android Studio 单刷《第一行代码》系列 06 —— Fragment 生命周期...

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  9. 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop...

    重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop 原文:重新想象 Window ...

最新文章

  1. H.264 picture parameter sets成员值含义学习笔记
  2. LAMP之二:LAMP的性能测试以及安装xcache,为php加速
  3. 进程和程序:编写shell——《Unix/Linux编程实践教程》读书笔记(第8章)
  4. 将二叉查找树转化为链表的代码实现
  5. 108. Leetcode 188. 买卖股票的最佳时机 IV (动态规划-股票交易)
  6. 查询数据库占用磁盘大小
  7. webService学习3:客户端生成webservice代码
  8. j2ee可以用于前端开发吗_用于J2EE开发的Cloud IDE
  9. LeetCode 1014. 最佳观光组合
  10. Python 逆向抓取 APP 数据
  11. Java selenium和python_c#和Java和python设置selenium超时时间
  12. linux密钥链接失败的原因,linux中ssh密钥登录失败问题解决办法
  13. Git来回切换版本的时候,pom文件变黄,每次都需要重新添加到maven以及修改后文件不生效的解决方法
  14. 惠普m1216硒鼓清零步骤_惠普m1136打印机怎么清零
  15. C语言购物管理系统项目
  16. 制作带边框的圆形头像
  17. 秦纪二 秦始皇帝二十年(甲戌,公元前227年)——摘要
  18. heka 输出到mysql_heka - 基于Go开发的日志收集工具,可用Go或lua开发插件
  19. win7/ubuntu18 双系统安装和卸载
  20. 教ai玩游戏_简单解释:DeepMind如何教AI玩视频游戏

热门文章

  1. 国际:如何识别真正的程序员
  2. 网吧电影服务器解决方案完全指南(一)
  3. Thread.yield()
  4. git 远程仓库管理 分支创建、管理、查看、切换
  5. {%extends bootstrap/base.html%}的添加,使得其他block无法继承
  6. linux网卡有很多error,教你设置win7系统虚拟机安装linux提示network error的解决方法...
  7. linux 进程通信 消息队列
  8. 指纹图像方向图matlab,matlab指纹方向场方向图程序
  9. 华为手机怎么强制关机_华为忘记锁屏密码怎么办?多品牌手机通用解锁密码
  10. 将区块链哈希转化为文字标题?IPSE哈希技术Hashlink解释