超简单,几行代码搞定Android底部导航栏―�C应项目需求以及小伙伴的留言,新加了两个方法:

  • 设置底部导航栏背景图片
  • 添加底部导航栏选项卡切换监听事件

底部导航栏的实现也不难,就是下边是几个Tab切换,上边一般是一个FrameLayout,然后FrameLayout中切换fragment。

网上有不少关于Android底部导航栏的文章,不过好像都只是关于下边Tab切的,没有实现Tab与fragment的联动,用的时候还要自己手写这部分代码,对我这个比较懒(据说,懒是程序员的一种美德_#)得程序员来说,这是不能忍的。

下边就来说说我的BottomTabBar吧。


这就是我以前封装过的BottomTabBar的效果图,现在就从这张效果图开始,先分析一下,都需要设置那些参数吧。

1、BottomTabBar的整体背景

虽然一般这里都是用白色或者接近白色的浅色调作为背景,但我们也不能给他固定死,要提供这样的一个方法,让使用者可以把背景设置成任何的颜色。

2、图片

这里不仅要传入一个图片,还要做图片做一些设置:

  • 图片的宽高尺寸(这个也需要对外设置一个方法)
  • 图片得设置居中,这个直接固定写死就好了,我见过的应用都是设置居中的,没见过别的情况,个人感觉,不设置居中也不美观啊

3、 文字

与图片类似,文字也需要做一些设置:

  • 文字的大小
  • 文字也是需要设置居中的,也像图片一样固定写死

4、 颜色

文字和图片的颜色都是只有两种,一种是选中状态下的,一种是未选中的,我们可以在这里统一设置,提供一个方法就可以了

5、边距

这里需要设置三个地方的边距:

  • Top边距,也就是图片与上边分割线的距离
  • middle边距,也就是图片与文字的距离
  • Bottom边距,也就是文字与底部的距离

6、分割线

上边说到了,图片上边需要设置分割线,当然,这只是部分使用者需要设置的,所以我们需要提供一个方法,用来设置是否显示分割线。此外还要设置分割线的高度以及其背景颜色

7、fragment

我这个BottomTabBar既然是要与fragment联动的,所以必须要传入一个fragment

大体的参数就是需要这些了,下面上代码:

GitHub代码连接

用法也简单,就像标题说的几行代码就可以搞定:

引用方式:

compile 'com.hjm:BottomTabBar:1.0.0'

1. 首先是XML文件代码:

简单吧,就这么一个控件就可以了。

当然,你要是想进行一些属性设置的话,需要加上命名空间

xmlns:hjm="http://schemas.android.com/apk/res-auto"

下面就开始详细的解释一下每个参数的含义以及用法:

参数名 涵义
tab_bar_background BottomTabBar的整体背景颜色
tab_img_width 图片宽度
tab_img_height 图片高度
tab_font_size 文字尺寸
tab_padding_top 上边距
tab_img_font_padding 图片文字间隔
tab_padding_bottom 下边距
tab_isshow_divider 是否显示分割线
tab_divider_height 分割线高度
tab_divider_background 分割线背景
tab_selected_color 选中的颜色
tab_unselected_color 未选中的颜色

这些参数可以指接在XML文件里设置

2. Activity文件代码:

mBottomTabBar = (BottomTabBar) findViewById(R.id.bottom_tab_bar);mBottomTabBar.init(getSupportFragmentManager())   .addTabItem("第一项", R.mipmap.ic_launcher, OneFragment.class)   .addTabItem("第二项", R.mipmap.ic_launcher, TwoFragment.class)   .addTabItem("第三项", R.mipmap.ic_launcher, ThreeFragment.class)   .addTabItem("第四项", R.mipmap.ic_launcher, FourFragment.class);

也很简单,是吧。

这里简单的提一句,这个init ( getSupportFragmentManager() )方法一定要第一个调用,没有这个初始化,后边什么也做不了。

或许大家也看出来了,这个init()方法里,我们需要传入一个FragmentManager,而且还是V4包下的,所以,在使用Activity的时候需要注意一下。

下边是一些方法的使用,都加了注释了

 /**   * 设置图片的尺寸   * 

* 此方法必须在addTabItem()之前调用 * * @param width 宽度 px * @param height 高度 px * @return */ setImgSize(float width, float height) /** * 设置文字的尺寸 *

* 此方法必须在addTabItem()之前调用 * * @param textSize 文字的尺寸 sp * @return */ setFontSize(float textSize) /** * 设置Tab的padding值 *

* 此方法必须在addTabItem()之前调用 * * @param top 上边距 px * @param middle 文字图片的距离 px * @param bottom 下边距 px * @return */ setTabPadding(float top, float middle, float bottom) /** * 设置选中未选中的颜色 *

* 此方法必须在addTabItem()之前调用 * * @param selectColor 选中的颜色 * @param unSelectColor 未选中的颜色 * @return */ setChangeColor(@ColorInt int selectColor, @ColorInt int unSelectColor) /** * 设置BottomTabBar的整体背景 * * @param color 背景颜色 * @return */ setTabBarBackgroundColor(@ColorInt int color) /** * 是否显示分割线 * * @param isShowDivider * @return */ isShowDivider(boolean isShowDivider) /** * 设置分割线的高度 * * @param height * @return */ setDividerHeight(float height) /** * 设置分割线的颜色 * * @param color * @return */ setDividerColor(@ColorInt int color) /** * 添加TabItem * * @param name 文字 * @param drawable 图片 * @param fragmentClass fragment * @return */ addTabItem(String name, Drawable drawable, Class fragmentClass)

值得注意的是前四个方法必须在addTabItem()之前调用,如果放在addTabItem()之后调用的话,就没有任何的效果了。

正确用法如下:

mBottomTabBar.init(getSupportFragmentManager())   .setImgSize(50,50)   .setFontSize(8)   .setTabPadding(4,6,10)   .setChangeColor(Color.DKGRAY,Color.RED)   .addTabItem("第一项", R.mipmap.ic_launcher, OneFragment.class)   .addTabItem("第二项", R.mipmap.ic_launcher, TwoFragment.class)   .addTabItem("第三项", R.mipmap.ic_launcher, ThreeFragment.class)   .addTabItem("第四项", R.mipmap.ic_launcher, FourFragment.class)   .setTabBarBackgroundColor(Color.WHITE)   .isShowDivider(false);

总结

以上所述是小编给大家介绍的超简单的几行代码搞定Android底部导航栏功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多相关文章

  1. android中指定颜色格式处理
  2. Android实际开发常用框架总结
  3. 使用AChartEngine画柱状图
  4. Android(安卓)多 Fragment 切换优化
  5. Android(安卓)中API之Drawable资源详解及简单实例
  6. 深入浅出Android事件分发机制——源码分析篇
  7. Android(安卓)之ActivityThead、ActivityManagerService 与activ
  8. Android(安卓)网络学习
  9. Android的Activity生命周期模拟程序及解析

随机推荐

  1. Android 进程保活,Service进程常驻
  2. Android context 文件模式
  3. Android四大组件之Service调优及进程保活
  4. Android Studio 学习笔记(一)环境搭建、
  5. Android之Inflate()方法用途
  6. Android上的resample处理
  7. Android 图表应用 解决方案
  8. Hyper-V 上的android
  9. Android HAL实例学习-Jollen的mokoid工程
  10. Android 如何直播 RTMP 流