导航栏

1、BottomTabBar的整体背景

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

2、图片

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

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

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

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

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

5、边距

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

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

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

7、fragment

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

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

 

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

引用方式:

[java]  view plain  copy
  1. compile 'com.hjm:BottomTabBar:1.1.2'  



1. 首先是XML文件代码:
[html]  view plain  copy
  1. <com.hjm.bottomtabbar.BottomTabBar  
  2.      android:id="@+id/bottom_tab_bar"  
  3.      android:layout_width="match_parent"  
  4.      android:layout_height="match_parent"/>  


简单吧,就这么一个控件就可以了。
当然,你要是想进行一些属性设置的话,需要加上命名空间

[html]  view plain  copy
  1. xmlns:hjm="http://schemas.android.com/apk/res-auto"  


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

参数名涵义
tab_bar_backgroundBottomTabBar的整体背景颜色
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文件里设置
[html]  view plain  copy
  1. <com.hjm.bottomtabbar.BottomTabBar  
  2.         android:id="@+id/bottom_tab_bar"  
  3.         android:layout_width="match_parent"  
  4.         android:layout_height="match_parent"  
  5.         hjm:tab_divider_background="#FF0000"  
  6.         hjm:tab_divider_height="5dp"  
  7.         hjm:tab_font_size="6sp"  
  8.         hjm:tab_img_font_padding="0dp"  
  9.         hjm:tab_img_height="30dp"  
  10.         hjm:tab_img_width="30dp"  
  11.         hjm:tab_isshow_divider="true"  
  12.         hjm:tab_padding_bottom="5dp"  
  13.         hjm:tab_padding_top="8dp"  
  14.         hjm:tab_selected_color="#000000"  
  15.         hjm:tab_unselected_color="@color/colorPrimary" />  


2. Activity文件代码:
[java]  view plain  copy
  1. mBottomTabBar = (BottomTabBar) findViewById(R.id.bottom_tab_bar);  
  2. mBottomTabBar.init(getSupportFragmentManager())  
  3.      .addTabItem("第一项", R.mipmap.ic_launcher, OneFragment.class)  
  4.      .addTabItem("第二项", R.mipmap.ic_launcher, TwoFragment.class)  
  5.      .addTabItem("第三项", R.mipmap.ic_launcher, ThreeFragment.class)  
  6.      .addTabItem("第四项", R.mipmap.ic_launcher, FourFragment.class);  


也很简单,是吧。

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

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

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

    
[html]  view plain  copy
  1. /**  
  2.      * 设置图片的尺寸  
  3.      * <p>  
  4.      * 此方法必须在addTabItem()之前调用  
  5.      *  
  6.      * @param width  宽度 px  
  7.      * @param height 高度 px  
  8.      * @return  
  9.      */  
  10.     setImgSize(float width, float height)  
  11.   
  12.     /**  
  13.      * 设置文字的尺寸  
  14.      * <p>  
  15.      * 此方法必须在addTabItem()之前调用  
  16.      *  
  17.      * @param textSize 文字的尺寸 sp  
  18.      * @return  
  19.      */  
  20.     setFontSize(float textSize)  
  21.   
  22.     /**  
  23.      * 设置Tab的padding值  
  24.      * <p>  
  25.      * 此方法必须在addTabItem()之前调用  
  26.      *  
  27.      * @param top    上边距 px  
  28.      * @param middle 文字图片的距离 px  
  29.      * @param bottom 下边距 px  
  30.      * @return  
  31.      */  
  32.     setTabPadding(float top, float middle, float bottom)  
  33.   
  34.     /**  
  35.      * 设置选中未选中的颜色  
  36.      * <p>  
  37.      * 此方法必须在addTabItem()之前调用  
  38.      *  
  39.      * @param selectColor   选中的颜色  
  40.      * @param unSelectColor 未选中的颜色  
  41.      * @return  
  42.      */  
  43.     setChangeColor(@ColorInt int selectColor, @ColorInt int unSelectColor)  
  44.   
  45.     /**  
  46.      * 设置BottomTabBar的整体背景  
  47.      *  
  48.      * @param color 背景颜色  
  49.      * @return  
  50.      */  
  51.     setTabBarBackgroundColor(@ColorInt int color)   
  52.   
  53.     /**  
  54.      * 是否显示分割线  
  55.      *  
  56.      * @param isShowDivider  
  57.      * @return  
  58.      */  
  59.     isShowDivider(boolean isShowDivider)  
  60.   
  61.     /**  
  62.      * 设置分割线的高度  
  63.      *  
  64.      * @param height  
  65.      * @return  
  66.      */  
  67.     setDividerHeight(float height)  
  68.   
  69.     /**  
  70.      * 设置分割线的颜色  
  71.      *  
  72.      * @param color  
  73.      * @return  
  74.      */  
  75.     setDividerColor(@ColorInt int color)   
  76.   
  77.    /**  
  78.      * 添加TabItem  
  79.      *  
  80.      * @param name          文字  
  81.      * @param drawable      图片  
  82.      * @param fragmentClass fragment  
  83.      * @return  
  84.      */  
  85.     addTabItem(String name, Drawable drawable, Class fragmentClass)  

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

正确用法如下:
[html]  view plain  copy
  1. mBottomTabBar.init(getSupportFragmentManager())  
  2.      .setImgSize(50,50)  
  3.      .setFontSize(8)  
  4.      .setTabPadding(4,6,10)  
  5.      .setChangeColor(Color.DKGRAY,Color.RED)  
  6.      .addTabItem("第一项", R.mipmap.ic_launcher, OneFragment.class)  
  7.      .addTabItem("第二项", R.mipmap.ic_launcher, TwoFragment.class)  
  8.      .addTabItem("第三项", R.mipmap.ic_launcher, ThreeFragment.class)  
  9.      .addTabItem("第四项", R.mipmap.ic_launcher, FourFragment.class)  
  10.      .setTabBarBackgroundColor(Color.WHITE)  
  11.      .isShowDivider(false);  


总结:
最快制作页面底部的四个RadioButto
(1)先将compile 'com.hjm:BottomTabBar:1.1.1' 导入build.gradle。
在布局文件里面导入<com.hjm.bottomtabbar.BottomTabBar>把宽高全部都为充满。在创建一个布局fragment方便后面进行使用,里面什么都不用写。

(2)在主类里面创建一个方法init(),
将下面代码直接粘贴,复制
[html]  view plain  copy
  1.   
[java]  view plain  copy
  1. bottomTabBar = (BottomTabBar) findViewById(R.id.bottomTabBar);  
  2. /底部导航栏  
  3.        bottomTabBar.init(getSupportFragmentManager())  
  4.                .setImgSize(3535)  
  5.                .setFontSize(10)  
  6.                .setChangeColor(Color.RED, Color.GRAY)  
  7.                .addTabItem("首页", R.mipmap.ic_nav_home_press, R.mipmap.ic_nav_home, Fragment1.class) 前面第一个是点击后的图片,第二个是点击前的图片  
  8.                .addTabItem("分类", R.mipmap.ic_nav_class_press, R.mipmap.ic_nav_class, Fragment2.class)  
  9.                .addTabItem("购物车", R.mipmap.ic_nav_cart_press, R.mipmap.ic_nav_cart, Fragment3.class)  
  10.                .addTabItem("个人", R.mipmap.ic_nav_user_press, R.mipmap.ic_nav_user, Fragment4.class)  
  11.                .isShowDivider(false);  


最后创建4个fragment,在frangment重写onCreateView的方法,(特别注意导包一定要导android.support.v4.app.Fragment)
[java]  view plain  copy
  1. View view=inflater.inflate(R.layout.fragment,container,false);  
  2. return view;  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值