先上效果图:

                               

先看布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.design.widget.TabLayoutandroid:id="@+id/tab_layout"android:layout_width="match_parent"android:layout_height="60dp" /><android.support.v4.view.ViewPagerandroid:id="@+id/fragment_pager"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>

这边初始化了三个数组,用于展示文字和图片,并绑定控件

private TabLayout tabLayout;private ViewPager viewPager;private String[] title = {"第一个", "第二个", "第三个"};private int[] selectImg = {R.mipmap.icon_past_yellow, R.mipmap.icon_wrelust, R.mipmap.icon_yrelust_yellow};private int[] unSelectImg = {R.mipmap.icon_past, R.mipmap.icon_wrelust_g, R.mipmap.icon_yrelust};@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fragment);tabLayout = (TabLayout) findViewById(R.id.tab_layout);viewPager = (ViewPager) findViewById(R.id.fragment_pager);initPager();}

viewpager中用三个fragment用于展示切换的界面

private void initPager() {viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic Fragment getItem(int position) {Fragment fragment = new Fragment();if (fragment != null) {switch (position) {case 0:fragment = new FirstFragment();break;case 1:fragment = new SecondFragment();break;case 2:fragment = new ThirdFragment();break;}}return fragment;}@Overridepublic int getCount() {return 3;}});tabLayout.setupWithViewPager(viewPager);viewPager.setCurrentItem(0);tabLayout.getTabAt(0).setCustomView(getTabView(0));tabLayout.getTabAt(1).setCustomView(getTabView(1));tabLayout.getTabAt(2).setCustomView(getTabView(2));initTab();}
setupWithViewPager()这个方法将把给定的ViewPager和这个TabLayout链接在一起,这样任何其中一个的变化会自动反映到另一个.

initTab()方法用于tablayout设置点击切换的变化

  private void initTab() {tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {View view = tab.getCustomView();TextView textView = view.findViewById(R.id.txt_tab_task);ImageView imageView = view.findViewById(R.id.img_tab_task);textView.setTextColor(Color.parseColor("#ed8200"));if (textView.getText().toString().equals(title[0])) {imageView.setImageResource(selectImg[0]);//  viewPager.setCurrentItem(0);} else if (textView.getText().toString().equals(title[1])) {imageView.setImageResource(selectImg[1]);//  viewPager.setCurrentItem(1);} else if (textView.getText().toString().equals(title[2])) {imageView.setImageResource(selectImg[2]);//  viewPager.setCurrentItem(2);}}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {View view = tab.getCustomView();TextView textView = view.findViewById(R.id.txt_tab_task);ImageView imageView = view.findViewById(R.id.img_tab_task);textView.setTextColor(Color.parseColor("#999999"));if (textView.getText().toString().equals(title[0])) {imageView.setImageResource(unSelectImg[0]);//  viewPager.setCurrentItem(0);} else if (textView.getText().toString().equals(title[1])) {imageView.setImageResource(unSelectImg[1]);//   viewPager.setCurrentItem(1);} else if (textView.getText().toString().equals(title[2])) {imageView.setImageResource(unSelectImg[2]);//   viewPager.setCurrentItem(2);}}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});}

getTabView()用于 设置默认的界面,也就是默认显示第一个界面

 private View getTabView(int position) {View view = LayoutInflater.from(this).inflate(R.layout.tab_task_item, null);TextView textView = view.findViewById(R.id.txt_tab_task);ImageView imageView = view.findViewById(R.id.img_tab_task);textView.setText(title[position]);imageView.setImageResource(unSelectImg[position]);if (position == 0) {textView.setTextColor(Color.parseColor("#ed8200"));imageView.setImageResource(selectImg[position]);}return view;}

tab_task_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/img_tab_task"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/txt_tab_task"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

FirstFragment

public class FirstFragment extends Fragment{@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_1, null);return view;}
}

fragment1.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="第一个"android:gravity="center"/>
</LinearLayout>
tab_task_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/img_tab_task"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/txt_tab_task"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

TabLayout和Fragment实现点击和滑动切换相关推荐

  1. TabLayout让Fragment在ViewPager中的滑动切换更优雅

    TabLayout让Fragment在ViewPager中的滑动切换更优雅 转载于:https://www.cnblogs.com/zhujiabin/p/7382500.html

  2. 小牛的安卓笔记-----底部导航栏的实现以及用TabLayout+ViewPager+Fragment实现页面滑动切换

    昨夜西风凋碧树,独上高楼,望尽天涯路. 今天难得有时间,准备写一写我们在APP中经常用到的页面形式,废话不多说,直接一张图看看页面效果你就知道为啥是常用的页面形式.先看看逻辑和最后的效果是怎么样的: ...

  3. Android viewPager2 + fragment 模拟微信首页2(滑动页面标签同步变化,点击标签滑动页面)

    可以实现的方式:BottomNavigationView 这里我们不使用BottomNavigationView,手动来写代码 先看一下效果 fragment + viewPager2模拟微信首页2( ...

  4. Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现

    嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 ...

  5. Android实现一个简易的新闻列表APP(TabLayout+ViewPager+Fragment)

    Android实现一个简易的新闻列表APP(TabLayout+ViewPager+Fragment) 文章目录 Android实现一个简易的新闻列表APP(TabLayout+ViewPager+F ...

  6. Android ViewPager和Fragment实现顶部导航界面滑动效果

    在项目中,我们常常需要实现界面滑动切换的效果.例如,微信界面的左右滑动切换效果.那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果. 一. ViewPager 官 ...

  7. [Android] 使用Include布局+Fragment滑动切换屏幕

        前面的文章已经讲述了"随手拍"项目图像处理的技术部分,该篇文章主要是主界面的布局及屏幕滑动切换,并结合鸿洋大神的视频和郭神的第一行代码(强推两人Android博客),完成了 ...

  8. Fragment结合nineold包实现滑动tab页

    文章结尾有×××.发现很多项目中都有一套属于自己的tab样式和风格.今天,想分享给大家一个自定义tabhost带有匀速滑动的指示器切换fragment的Demo,略显不才,只能分享简单的东西,后面有× ...

  9. fragment+viewpager+tablayou实现滑动切换页面

    本文目标:实现滑动切换页面 首先,Tablayout控件就需要添加design library,在android studio中添加依赖  compile 'com.android.support:d ...

最新文章

  1. c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法
  2. Git之常用命令的综合使用和示例分析
  3. awk的sub函数和gsub函数的用法
  4. python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析
  5. Git 的安装、使用、分支、命令 一篇博客全都学会
  6. selinum-操作表单元素-0223
  7. leetcode - 1024. 视频拼接
  8. 疯狂的Web应用开源项目
  9. 光学算法——Zernike拟合
  10. MsSQL SQLServer 查询 表中字段的及类型是否为空
  11. ubuntu学习日记--Lesson5:系统目录详解
  12. 【机器学习】端到端机器学习实践
  13. 乘积取中法matlab,迭代取中法、乘同余法及混合同余法产生随机数方法
  14. win7计算机地址栏在那,win7系统如何使用地址栏功能|win7系统使用地址栏的方法...
  15. LInux下CAN滤波时间,linux下can调试工具canutils安装过程记录
  16. 华为odjava机试题_华为机试题及答案
  17. 揭开Docker的神秘面纱
  18. 《 Socket.IO》 解决 WebSocket 通信
  19. csgo如何增加人机数量及平衡_csgo怎么单机跟电脑打只有每队5人,怎么增大BOT
  20. vue3 - ref和reactive的区别

热门文章

  1. 如何获取Dataframe的行数和列数
  2. 精灵盛典玛雅服务器账号,精灵盛典小号倒大号积分方法
  3. JupyterLab 插件开发教程
  4. Ultra96V2 使用教程1: mini dp的使用
  5. 网店版重生系列:Linux下Jboss启动、关闭、端口配置等常见问题FAQ
  6. BT40主轴弹簧、双螺旋弹簧、耐高温弹簧、超高寿命弹簧
  7. 尔雅科学计算与matlab,科学计算与MATLAB语言尔雅2020年章节答案
  8. 微信小程序---一键转发
  9. Copyright © 2009 - 2019 All Rights Reserved. 迅法网版权所有 渝ICP备18006023号-1
  10. 折弯机使用说明书_MERUGA数控折弯机操作手册