近几年Google已经不再维护ViewPage,转向了ViewPage2,码农也不得不与时俱进更新一下自己的知识,就普通使用来说两者的区别不大,一般都是搭配Tablayout使用,使用也都不算复杂,下面直接贴代码:

    <com.google.android.material.tabs.TabLayoutandroid:id="@+id/tabLayout"android:layout_width="0dp"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"></com.google.android.material.tabs.TabLayout><androidx.viewpager2.widget.ViewPager2android:id="@+id/viewPager2"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_constraintBottom_toTopOf="@+id/tabLayout"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
public class MyFragmentStateAdapter extends FragmentStateAdapter {private ArrayList<Fragment> fragments;public MyFragmentStateAdapter(@NonNull FragmentActivity fragmentActivity, ArrayList<Fragment> fragments) {super(fragmentActivity);this.fragments = fragments;//把fragments传入MyFragmentStateAdapter}@NonNull@Overridepublic Fragment createFragment(int position) {return fragments.get(position);//这里记得要重写,默认是返回Null的}@Overridepublic int getItemCount() {return fragments.size();//这里也改}
}
public class MainActivity extends AppCompatActivity {public static final String TAG = "MainActivity";TabLayout tabLayout;ViewPager2 viewPager2;ArrayList<String> titles;ArrayList<Fragment> fragments;MyFragmentStateAdapter myFragmentStateAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tabLayout = findViewById(R.id.tabLayout);viewPager2 = findViewById(R.id.viewPager2);titles = new ArrayList<>();fragments=new ArrayList<>();titles.add("12");titles.add("23");titles.add("34");titles.add("45");fragments.add(new Fragment());fragments.add(new Fragment());fragments.add(new Fragment());fragments.add(new Fragment());myFragmentStateAdapter=new MyFragmentStateAdapter(this,fragments);viewPager2.setAdapter(myFragmentStateAdapter);viewPager2.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);new TabLayoutMediator(tabLayout, viewPager2, (tab, position) ->             tab.setText(titles.get(position))).attach();;}}

上面的核心就是创建TabLayoutMediator以将 tabLayout 与 viewPager2关联:

new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> tab.setText(titles.get(position))).attach();;

除此之外都是常规操作,最终效果如下:

ViewPage2+TabLayout小记相关推荐

  1. TabLayout的指示器长度 的问题

    刚开始效果图 修改后的效果图 这个效果实现 就是在 tablayout 的xml 里面添加 app:tabIndicatorFullWidth="false"

  2. TabLayout 在宽屏幕上tab不能平均分配的问题解决

    TabLayout 在屏幕比较宽的屏幕上的时候 ,不如平板,特质的屏幕的时候 tabMode="fixed" 这个时候就是失效了 显示失效了 是居中的效果 这个修改方法就是在xml ...

  3. Tablayout 多个界面使用一个fragment 的实例

    这个主要还是adapter 里面 添加list 就行了 这里直接上代码吧 ,我刚写的demo 看的时候看adapter 就行了 布局代码: <?xml version="1.0&quo ...

  4. Tablayout 修改默认选项页,或者跳转到指定的选项页

    tablayout 的默认选项页为 viewpage.setCurrentItem(0) 如果想修改为第二页 viewpage.setCurrentItem(1) 即可 如果是根据跳转的情况来跳到不同 ...

  5. TabLayout 遇到那些坑 tab标签不显示问题

    别人写的参考下,知道问题所在 如何使用 :注意事项 <?xml version="1.0" encoding="utf-8"?> <Relat ...

  6. hp-ux 集群,内存 小记

    hp-ux 集群,内存 小记 -----查看hp 集群状态信息 # cmviewcl -v CLUSTER        STATUS       dbsvr          up          ...

  7. android自定义tab下划线变大,Android开发之设置TabLayout下方下划线的宽度

    由于最近项目需要,需要设置tabLayout下方下划线的长度.笔者上网找了半天,也没有找到方法.后来了解到在源码中对tabLayout的下划线进行了设置.并没有方法可以直接设置. 然后,笔者看到了某位 ...

  8. Android Studio 第五十期 - 自定义TabLayout

    代码已经整理好,效果如下图: code1: <com.ui.widget.UnAnimTabLayoutandroid:id="@+id/tab"android:layout ...

  9. TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题

    场景 TabLayout+ViewPager+Fragment的使用过程中需要判断Fragment是否对用户可见,监听Fragment由不可见变为可见的事件 解决方案 重写Fragment的setUs ...

  10. <笔记2>numpy的生成随机数用法小记

    numpy的生成随机数用法小记 numpy生成随机数 <以下图片来自黑马程序猿录播课程笔记> import numpy as np import random #random 生产随机数 ...

最新文章

  1. 静态方法、类方法、属性方法
  2. 《漫画算法2》源码整理-7 第K大的数字
  3. Spring AMQP ActiveMQ教程
  4. 卡尔曼滤波原理理解(1)
  5. X 射线成像 新型数字技术 —— CMOS 探测器
  6. webpack:Cannot find module 'extract-text-webpack-plugin'
  7. 刘奇:当今一切都要更实时、更弹性、更简单,TiDB 就是这样的基础设施 | TiDB DevCon 2020
  8. EXCEL对比重复数据
  9. 微信公众号开发诡异问题:errcode:40125,errmsg解决方案
  10. mac日历与iphone日历不无法同步问题
  11. C# 利用 OleDb 组件操作 Excel 进行文件读写操作
  12. eBPF: 深入探究 Map 类型
  13. # CF #807 Div.2(A - D)
  14. jenkins API 使用postman调用
  15. java基础知识之加强
  16. 西部之旅之------相机的选择
  17. tomcat 做为大型应用的配置
  18. 海思开发板海图科技测评,海图海思开发板怎么样
  19. 转:CDH--彻底解决问题----时钟异常
  20. Windows系统的消息

热门文章

  1. 搜狗微信的链接并转换成永久链
  2. 三轴加速度传感器和六轴惯性传感器_六轴传感器和三轴传感器的区别在哪
  3. 数据库如何增加表中字段
  4. jenkins下载插件下载不了,解决办法
  5. 小观matlab插值函数
  6. 智象运维干货 | HP iLo4 Smash CLP命令行参考
  7. 初学者CAD画矩形如何定义尺寸?
  8. Hyper-V固定虚拟机IP
  9. 马尔可夫链 以及 隐马尔可夫模型(HMM)
  10. matlab计算股票的预期收益率,如何计算股票预期收益率