超简单的几行代码搞定Android底部导航栏功能

超简单的几行代码搞定Android底部导航栏功能,第1张

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

超简单,几行代码搞定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文件代码:

<com.hjm.bottomtabbar.BottomTabbar  androID:ID="@+ID/bottom_tab_bar"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"/>

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

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

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文件里设置

<com.hjm.bottomtabbar.BottomTabbar  androID:ID="@+ID/bottom_tab_bar"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  hjm:tab_divIDer_background="#FF0000"  hjm:tab_divIDer_height="5dp"  hjm:tab_Font_size="6sp"  hjm:tab_img_Font_padding="0dp"  hjm:tab_img_height="30dp"  hjm:tab_img_wIDth="30dp"  hjm:tab_isshow_divIDer="true"  hjm:tab_padding_bottom="5dp"  hjm:tab_padding_top="8dp"  hjm:tab_selected_color="#000000"  hjm:tab_unselected_color="@color/colorPrimary" />

2. Activity文件代码:

mBottomTabbar = (BottomTabbar) findVIEwByID(R.ID.bottom_tab_bar);mBottomTabbar.init(getSupportFragmentManager())   .addTabItem("第一项",R.mipmap.ic_launcher,OneFragment.class)   .addTabItem("第二项",TwoFragment.class)   .addTabItem("第三项",ThreeFragment.class)   .addTabItem("第四项",FourFragment.class);

也很简单,是吧。

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

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

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

 /**   * 设置图片的尺寸   * <p>   * 此方法必须在addTabItem()之前调用   *   * @param wIDth 宽度 px   * @param height 高度 px   * @return   */  setimgSize(float wIDth,float height)  /**   * 设置文字的尺寸   * <p>   * 此方法必须在addTabItem()之前调用   *   * @param textSize 文字的尺寸 sp   * @return   */  setFontSize(float textSize)  /**   * 设置Tab的padding值   * <p>   * 此方法必须在addTabItem()之前调用   *   * @param top  上边距 px   * @param mIDdle 文字图片的距离 px   * @param bottom 下边距 px   * @return   */  setTabpadding(float top,float mIDdle,float bottom)  /**   * 设置选中未选中的颜色   * <p>   * 此方法必须在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("第一项",FourFragment.class)   .setTabbarBackgroundcolor(color.WHITE)   .isShowdivIDer(false);

总结

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

您可能感兴趣的文章:Android实现顶部导航栏可点击可滑动效果(仿微信仿豆瓣网)Android中TabLayout+ViewPager 简单实现app底部Tab导航栏Android仿网易客户端顶部导航栏效果Android项目实战之仿网易顶部导航栏效果Android实现沉浸式导航栏实例代码Android程序开发之Fragment实现底部导航栏实例代码Android实现沉浸式通知栏通知栏背景颜色跟随app导航栏背景颜色而改变Android实现底部导航栏功能(选项卡) 总结

以上是内存溢出为你收集整理的超简单的几行代码搞定Android底部导航栏功能全部内容,希望文章能够帮你解决超简单的几行代码搞定Android底部导航栏功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存