先看效果

网络图片(使用第三方库Glide加载图片)

GIF1.gif

本地图片

GIF2.gif

使用方法

xml(布局可关联鸿洋大神的AutoLinearLayout可完美适配)

activity_tab.xml

复制代码

layout_coutomizetab_top.xml

复制代码

TabActivity

mTabbeans.add(new TabBean(mTitles[i], null,null, mSelectColor, mUnSelectColor,mSelectIcons[i], mUnSelectIcons[i]));

TabBean参数详解

参数1:Tab标题文字

参数2:选中Tab的网络图片地址(null为不加载网络图片)

参数3:未选中Tab的网络图片地址(null为不加载网络图片)

参数4:选中Tab字体的颜色

参数5:未选中Tab字体的颜色

参数6:选中Tab的本地图片地址

参数7:未选中Tab的本地图片地址

public class TabActivity extends BaseActivity {

private ArrayList mTabbeans = new ArrayList<>();

private ArrayList mFragments = new ArrayList<>();

private String[] mTitles = {"首页", "关于", "消息", "我的"};

private int[] mUnSelectIcons = {

R.drawable.tab_home_unselect,R.drawable.tab_more_unselect, R.drawable.tab_speech_unselect, R.drawable.tab_contact_unselect};

private int[] mSelectIcons = {

R.drawable.tab_home_select,R.drawable.tab_more_select, R.drawable.tab_speech_select,R.drawable.tab_contact_select};

private int mSelectColor = Color.BLUE;

private int mUnSelectColor = Color.BLACK;

private String[] mSelectUrls={"http://pic38.nipic.com/20140307/2531170_074502124000_2.jpg",

"http://pic72.nipic.com/file/20150719/9583477_022559838000_2.jpg",

"http://img1.imgtn.bdimg.com/it/u=1283566983,3267885599&fm=21&gp=0.jpg",

"http://pic38.nipic.com/20140307/2531170_074502124000_2.jpg"};

private String[] mUnSelectUrls={"http://img.taopic.com/uploads/allimg/110419/2376-11041Z15S685.jpg",

"http://pic.taopic.com/uploads/allimg/140627/240424-14062G2544388-lp.jpg",

"http://pic42.nipic.com/20140628/19074191_112631798000_2.jpg",

"http://pic74.nipic.com/file/20150807/21290976_162220169617_2.jpg"};

private ViewPager mViewPager;

private CustomizeTabLayout mTabLayout;

@Override

protected int getOverridePendingTransitionMode() {

return RIGHT;

}

@Override

protected int getLayoutId() {

return R.layout.activity_tab;

}

@Override

protected void initView() {

mTabLayout = getView(R.id.tabLayout);

mViewPager = getView(R.id.vp_container);

for (int i = 0; i < mTitles.length; i++) {

// mTabbeans.add(new TabBean(mTitles[i], mSelectUrls[i],mUnSelectUrls[i], mSelectColor, mUnSelectColor,mSelectIcons[i], mUnSelectIcons[i]));

mTabbeans.add(new TabBean(mTitles[i], null,null, mSelectColor, mUnSelectColor,mSelectIcons[i], mUnSelectIcons[i]));

}

mFragments.add(new HomeFragment());

mFragments.add(new TalkaboutFragment());

mFragments.add(new MessageFragment());

mFragments.add(new MineFragment());

}

@Override

protected void setListener() {

}

@Override

protected boolean isActionBar() {

return false;

}

@Override

protected void initDate() {

mViewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));

initFragmentViewpager();

}

private class MyPagerAdapter extends FragmentPagerAdapter {

public MyPagerAdapter(FragmentManager fm) {

super(fm);

}

@Override

public int getCount() {

return mFragments.size();

}

@Override

public CharSequence getPageTitle(int position) {

return mTitles[position];

}

@Override

public Fragment getItem(int position) {

return mFragments.get(position);

}

}

private void initFragmentViewpager() {

mTabLayout.setTabDate(mTabbeans);

mTabLayout.setmListener(new CustomizeTabLayout.OnTabSelectListener() {

@Override

public void onTabSelect(int position) {

mViewPager.setCurrentItem(position, false);

}

/**

* 连续点击调用此方法

*/

@Override

public void onTabReselect(int position) {

}

});

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override

public void onPageSelected(int position) {

mTabLayout.setCurrentTab(position);

}

@Override

public void onPageScrollStateChanged(int state) {

}

});

}

}复制代码

自定义Tab CustomizeTabLayout.java

如要配置鸿洋大神的完美适配需要extendsAutoFrameLayout

mTabLinearLayout=new LinearLayout(context); 修改成mTabLinearLayout=new AutoLinearLayout(context);即可

/**

* Created by Dengxiao on 2016/11/4.

*/

public class CustomizeTabLayout extends FrameLayout {

private LinearLayout mTabLinearLayout;

private Context mContext;

private ArrayList mTabBeans=new ArrayList<>();

private int mTabCount;

private int mCurrentTab;

private OnTabSelectListener mListener;

private int mLastTab;

public void setmListener(OnTabSelectListener mListener) {

this.mListener = mListener;

}

public CustomizeTabLayout(Context context) {

this(context,null,0);

}

public CustomizeTabLayout(Context context, AttributeSet attrs) {

this(context,attrs,0);

}

public CustomizeTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

this.mContext=context;

mTabLinearLayout=new LinearLayout(context);

addView(mTabLinearLayout);

}

//添加导航栏数据

public void setTabDate(ArrayList tabBeans){

if (tabBeans == null || tabBeans.size() == 0) {

throw new IllegalStateException("TabEntitys can not be NULL or EMPTY !");

}

this.mTabBeans.clear();

this.mTabBeans.addAll(tabBeans);

notifyDataSetChanged();

}

//更新数据

private void notifyDataSetChanged() {

mTabLinearLayout.removeAllViews();

this.mTabCount=mTabBeans.size();

View tabView;

for(int i=0;i复制代码Glide需在build.gradle配置

dependencies {

compile 'com.github.bumptech.glide:glide:3.7.0'

}复制代码

别忘记添加权限

复制代码

以上贴出全部代码

android底部导航栏网络请求有冲突,Android 自定义底部导航栏 CustomizeTabLayout(支持访问网络图片、本地图片)...相关推荐

  1. Android Flow遇见Retrofit网络请求实践

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121754941 本文出自[赵彦军的博客] 文章目录 前言 RetrofitFlow ...

  2. Android 开发之Okhttp网络请求日志打印

    这里写自定义目录标题 Android 开发之Okhttp 网络请求日志打印 OkHTTP网络日志打印 Android 开发之Okhttp 网络请求日志打印 网络请求是开发的日常工作内容之一,网络日志打 ...

  3. Android --- Retrofit 之 Okhttp3 网络请求总是调用 onFailure 方法,而不调用 onResponse,报错 timeout。

    今天在做 Android 项目的时候使用到了 okhttp3 的网络请求,由于我没有设置 ReadTimeout,指的是建立连接后从服务器读取到可用资源所用的时间.所以就会抛出异常(timeout), ...

  4. android5 网络请求时 FileNotFoundException android兼容性原因

    在制作android app过程中,难免需要用到网络请求,而网络请求过程中,中文参数很多时候也会用到. 接下来是关于我遇到的问题 在android7以上的版本中,带中文参数的网络请求能正常访问网站,而 ...

  5. Android中ListView结合网络请求开发小案例(适合初学者必看的一篇详细实例)

    本文旨在对Android基础项目,ListView项目实际小应用(更多的结合小版块完成对用户需求的完整代码体现) 首先在这里,说说CSDN这个平台... 相信大家一定也不陌生,个人之前在学习中遇到的各 ...

  6. android网络请求回调管理,Android网络请求回调没正常走 处理方案

    处理类 import android.os.Handler; import android.os.Looper; import android.os.Message; /** * * 考虑可能回调没正 ...

  7. android网络请求回调管理,Android HTTP网络请求的异步实现

    前言 大家都知道网络操作的响应时间是不定的,所有的网络操作都应该放在一个异步操作中处理,而且为了模块解耦,我们希望网络操作由专门的类来处理.所有网络数据发送,数据接收都有某几个类来实现,外部其它模块只 ...

  8. android网络请求分析工具,android网络数据请求

    网络数据请求在android中应用很广泛,也很重要,所以我记录了上课讲的获取数据: 大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外. 1.HttpURLConnection的 ...

  9. Android 开发:(十四)NavigationBar篇-自定义顶部导航栏

    本篇记录了navigation bar顶部导航栏的自定义方法,抛砖引玉,简单实现了常用的布局,在此基础上可添加较复杂的布局. 第一步:新建NavigationBar文件,继承与FrameLayout. ...

最新文章

  1. CVPR 2019 | 惊艳的SiamMask:开源快速同时进行目标跟踪与分割算法
  2. C++实现仿射加密法
  3. 用MDT 2012为企业部署windows 7(十一)--抓取标准模板机镜像
  4. 华为u8825d解锁工具_黔隆科技刷机教程VIVOX20PLUSA忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  5. 6月19日 NSFileHandle文件类的常用方法
  6. 头顶距离顶部百分比_近距离接触COLMO子母太空舱洗衣机:“真分区洗”应该什么样...
  7. HTML:颜色列表(自用)
  8. ios icon尺寸问题
  9. Ubuntu 18.04 安装驱动
  10. css3 动画还原,CSS3animation动画-案例人物走路动画:(三)
  11. 消气机器人_星新一少年科幻·淘气的机器人最新章节_星新一著_掌阅小说网
  12. DPABI详细使用教材——数据准备、预处理流程、数据分析流程
  13. word中的字号相当于多少px
  14. 简单几步学会java爬虫
  15. 网页点击弹出QQ对话框
  16. 央行下发85号文 电商平台能跑赢监管吗?
  17. 全国计算机信息高新技术考试办公软件应用,全国计算机信息高新技术考试办公软件中级操作员考试题库(189页)-原创力文档...
  18. JS计算请假时间(起始时间与终止时间)
  19. ItemEvent事件,简单计算器
  20. AMTech2021中国国际先进制造技术展览会即将盛大开幕

热门文章

  1. matlab怎么求imf图,MATLAB中提取EMD分解后的每个IMF图像,并导出每个IMF数据
  2. 轨迹跟踪主要方法_带你入门多目标跟踪(一)领域概述
  3. mysql 数据库连接不够_(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例...
  4. mysql 迁移后无法启动_Mysql数据迁移后启动出错_MySQL
  5. PostgreSQL 12系统表(8)pg_indexes
  6. win apache php 配置,win下Apache mysql PHP配置
  7. android 8.0 三星,这些三星手机竟到2019年才能升级安卓8.0:等到头发都白了
  8. windows和linux如何通信,别总是把Windows和Linux混为一谈
  9. linux awk 区别,awk中RS、ORS、FS、OFS的区别和联系小结
  10. SpringCloud Consul 服务注册与发现