前言:一款简单好用封装好的AndroidUI控件,底部导航栏。

1.使用

1.1添加  compile 'com.hjm:BottomTabBar:1.1.1'

1.2  activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <com.hjm.bottomtabbar.BottomTabBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bottontabbar"
android:layout_alignParentBottom="true"
> </com.hjm.bottomtabbar.BottomTabBar> </RelativeLayout>

Activity代码:

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import com.hjm.bottomtabbar.BottomTabBar; public class MainActivity extends AppCompatActivity { private BottomTabBar bottomTabBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomTabBar = (BottomTabBar)findViewById(R.id.bottontabbar);
bottomTabBar.init(getSupportFragmentManager())
.setImgSize(100,100)
.setFontSize(20)
.setTabPadding(4,6,10)
.setChangeColor(Color.DKGRAY,Color.RED)
.addTabItem("第一项", R.mipmap.qq, FragmentoneActivity.class)
.addTabItem("第二项", R.mipmap.qq, FragmenttwoActivity.class)
.addTabItem("第三项", R.mipmap.qq, FragmentthreeActivity.class)
.addTabItem("第四项", R.mipmap.qq, FragmentfourActivity.class)
.setTabBarBackgroundColor(Color.WHITE)
.isShowDivider(true); }
}

1.3 添加几个FramgLayout  Activity

其中一个:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="1"
android:gravity="center"
android:textSize="20dp"
/> </FrameLayout>

对应:

其中一个,其他都是基本一样

Fragmentone:

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class FragmentoneActivity extends Fragment { @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view1= inflater.inflate(R.layout.activity_fragmentone, container, false);
return view1;
}
}

简单的代码完成后,就可以运行了

效果图:

2.使用说明

2.1 引用方式:

compile 'com.hjm:BottomTabBar:1.0.0'

2.2添加一些属性

你要是想进行一些属性设置的话,需要加上命名空间
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.3 注意

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

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

2.4 以下是一些方法的使用

有些方法必须addTabItem()之前调用,如果放在addTabItem()之后调用的话,就没有任何的效果了。

/**
* 设置图片的尺寸
* <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)

就像这样

详情查看http://www.jianshu.com/p/ade8485a16be

Android------BottonTabBar的更多相关文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  2. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  3. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  4. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  5. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  8. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  9. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  10. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

随机推荐

  1. Python 爬虫 七夕福利

    祝大家七夕愉快 妹子图 import requests from lxml import etree import os def headers(refere):#图片的下载可能和头部的referer ...

  2. php7+apache2.4+mysql 环境配置(window环境)

    最近,小主从事PHP开发.特将最近如何搭建php7的过程记录在此!希望有需要,可以借鉴!( 电脑必须win7 sp1以上, .netframework4 ) Windows7安装php7,Win7+p ...

  3. ssm中需要注意的问题

    1.在controller中需要加注解 @Controller @RequestMapping("url") @Autowired private CardService card ...

  4. 环境变量Path简介

    更多详细专业的详解,请参见:http://www.cnblogs.com/sunada2005/articles/2725277.html 什么是Path变量: PATH环境变量.作用是指定命令搜索路 ...

  5. Caliburn.Micro 项目文档(翻译):Screens, Conductors and Composition

    原文地址(项目说明文档):[Documentation  Screens, Conductors and Composition]http://caliburnmicro.codeplex.com/w ...

  6. [Jmeter并发报错解决方案]org.apache.http.NoHttpResponseException: 10.0.4.147:8000 failed to respond

    背景:公司模型框架是Nginx+uwsgi+Django+nginx,一开始使用Jmeter进行高并发请求测试,发现成功率只有50%,换用postman,成功率100%,代码进行高并发一样不会报错. ...

  7. 说说Ruby中的Symbol类

    相信大多人在学习Ruby过程中,都被Symbol类型迷惑过.因为其他语言基本没有这个类.而且它太灵活了.很多人只知其一不知其二. 本人查了不少资料,自己总结一下. 首先来看一下Ruby之父所著的< ...

  8. 图片文件转换成Base64编码实现ajax提交图片

    //上传头像图片 function uploadHead(imgPath) { console.log("imgPath = " + imgPath); var image = n ...

  9. 聊聊WS-Federation

    本文来自网易云社区 单点登录(Single Sign On),简称为 SSO,目前已经被大家所熟知.简单的说, 就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 举例: 我们 ...

  10. 从细节处谈Android冷启动优化

    本文来自网易云社区 Android APP冷启动优化,对于Android开发同学而言可能是个老生常谈的技优了. 之所以花时间写一篇冷启动优化的文章: 我想从另外一个角度来说冷启动优化,如题所述,从细节 ...