Android中如何使用TabLayout+ViewPager实现底部导航栏
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Android中如何使用TabLayout+ViewPager实现底部导航栏",在日常操作中,相信很多人在Android中如何使用TabLayout+ViewPager实现底部导航栏
千家信息网最后更新 2026年11月02日Android中如何使用TabLayout+ViewPager实现底部导航栏
这篇文章主要介绍"Android中如何使用TabLayout+ViewPager实现底部导航栏",在日常操作中,相信很多人在Android中如何使用TabLayout+ViewPager实现底部导航栏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Android中如何使用TabLayout+ViewPager实现底部导航栏"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
布局
代码
mViewPager = (ViewPager) view.findViewById(R.id.view_pager); mTabLayout = (TabLayout) view.findViewById(R.id.tab_layout); initTabList(); mAdapter = new TabLayoutFragmentAdapter(getChildFragmentManager(), mTabList, getActivity(), mFragments, mTabImgs); mViewPager.setAdapter(mAdapter); mViewPager.setCurrentItem(0); mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED);//设置TabLayout的模式 for (int i = 0; i < mTabLayout.getTabCount(); i++) { mTabLayout.getTabAt(i).setCustomView(mAdapter.getTabView(i)); } mTabLayout.addOnTabSelectedListener(this);//设置TabLayout的选中监听这里需要注意的就是TabLayout的使用。TabLayou配合ViewPager使用。要用 mTabLayout.setupWithViewPager(mViewPager);使二者联系起来。另外这里面使用的是customView,当然TabLayout自带方法也可实现icon+text的效果。也就是效果:TabLayout + ViewPager 2
根据Tab选中状态显示Tab键效果
@Override public void onTabSelected(TabLayout.Tab tab) { setTabSelectedState(tab); } @Override public void onTabUnselected(TabLayout.Tab tab) { setTabUnSelectedState(tab); } @Override public void onTabReselected(TabLayout.Tab tab) { } private void setTabSelectedState(TabLayout.Tab tab) { View customView = tab.getCustomView(); TextView tabText = (TextView) customView.findViewById(R.id.tv_tab_text); ImageView tabIcon = (ImageView) customView.findViewById(R.id.iv_tab_icon); tabText.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary)); String s = tabText.getText().toString(); if (getString(R.string.item_home).equals(s)) { tabIcon.setImageResource(R.drawable.home_fill); } else if (getString(R.string.item_location).equals(s)) { tabIcon.setImageResource(R.drawable.location_fill); } else if (getString(R.string.item_like).equals(s)) { tabIcon.setImageResource(R.drawable.like_fill); } else if (getString(R.string.item_person).equals(s)) { tabIcon.setImageResource(R.drawable.person_fill); } } private void setTabUnSelectedState(TabLayout.Tab tab) { View customView = tab.getCustomView(); TextView tabText = (TextView) customView.findViewById(R.id.tv_tab_text); ImageView tabIcon = (ImageView) customView.findViewById(R.id.iv_tab_icon); tabText.setTextColor(ContextCompat.getColor(getActivity(), R.color.black_1)); String s = tabText.getText().toString(); if (getString(R.string.item_home).equals(s)) { tabIcon.setImageResource(R.drawable.home); } else if (getString(R.string.item_location).equals(s)) { tabIcon.setImageResource(R.drawable.location); } else if (getString(R.string.item_like).equals(s)) { tabIcon.setImageResource(R.drawable.like); } else if (getString(R.string.item_person).equals(s)) { tabIcon.setImageResource(R.drawable.person); } }这里面不用设置defaultFragment,TabLayout会默认显示***个;
另外,这里也贴出使用TabLayout自带方法来实现效果代码
值得说的是,自带方法不能自定义icon和text的间距。用起来很方便,但是可能不是你要求的那个尺寸大小。我没有去深究这里面的源码。如果有人知道这个自带方法怎么改变的,也请告知一下。
mViewPager = (ViewPager) view.findViewById(R.id.view_pager); mTabLayout = (TabLayout) view.findViewById(R.id.tab_layout); initTabList(); mAdapter = new TabLayoutFragment2Adapter(getChildFragmentManager(), mTabList, getActivity(), mFragments, mTabImgs); mViewPager.setAdapter(mAdapter); mViewPager.setCurrentItem(0); mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabMode(TabLayout.MODE_FIXED); // for (int i = 0; i < mTabLayout.getTabCount(); i++) { // mTabLayout.getTabAt(i).setCustomView(mAdapter.getTabView(i)); // } mTabLayout.addOnTabSelectedListener(this); // mViewPager.setCurrentItem(0); mTabLayout.getTabAt(0).setIcon(R.drawable.home_fill);//自有方法添加icon mTabLayout.getTabAt(1).setIcon(R.drawable.location); mTabLayout.getTabAt(2).setIcon(R.drawable.like); mTabLayout.getTabAt(3).setIcon(R.drawable.person);Tab切换
@Override public void onTabSelected(TabLayout.Tab tab) { // setTabSelectedState(tab);//这个也无需使用 resetTabIcon(); int position = tab.getPosition(); Log.e("Kevin", "position--->" + position); switch (position) { case 0: tab.setIcon(R.drawable.home_fill); break; case 1: tab.setIcon(R.drawable.location_fill); break; case 2: tab.setIcon(R.drawable.like_fill); break; case 3: tab.setIcon(R.drawable.person_fill); break; } } private void resetTabIcon() { mTabLayout.getTabAt(0).setIcon(R.drawable.home); mTabLayout.getTabAt(1).setIcon(R.drawable.location); mTabLayout.getTabAt(2).setIcon(R.drawable.like); mTabLayout.getTabAt(3).setIcon(R.drawable.person); }到此,关于"Android中如何使用TabLayout+ViewPager实现底部导航栏"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
方法
底部
导航
效果
学习
代码
更多
帮助
实用
接下来
不用
也就是
大小
就是
尺寸
布局
文章
模式
源码
状态
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
百单网互联网科技有限公司怎么样
互联网科技工作委员会副主任毛军
兼蜜互联网科技
火传媒上海互联网科技
互联网科技的未来发展
一五八零互联网科技
人人互联网科技是培训
卓越科技互联网 招聘
互联网科技类展会
哈尔滨新华互联网科技
哈尔滨秒房互联网科技有限公司
互联网科技产品
顶级互联网科技成果有哪些
互联网新科技动漫ppt素材
有人说阿里系是互联网科技企业
互联网公司属于科技吗
互联网科技博主张洲
互联网科技自媒体灵感
中国主要互联网科技公司
互联网扶贫科技
互联网公司 科技公司
互联网 视角下的科技创新
互联网科技公司介绍
富国互联网科技创新基金
上海电发互联网科技有限公司
金融科技与互联网金融相同和不同
互联网科技研发水平
健康食品互联网创新科技园项目
互联网在线教育科技创业