ViewPage2+TabLayout小记
近几年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小记相关推荐
- TabLayout的指示器长度 的问题
刚开始效果图 修改后的效果图 这个效果实现 就是在 tablayout 的xml 里面添加 app:tabIndicatorFullWidth="false"
- TabLayout 在宽屏幕上tab不能平均分配的问题解决
TabLayout 在屏幕比较宽的屏幕上的时候 ,不如平板,特质的屏幕的时候 tabMode="fixed" 这个时候就是失效了 显示失效了 是居中的效果 这个修改方法就是在xml ...
- Tablayout 多个界面使用一个fragment 的实例
这个主要还是adapter 里面 添加list 就行了 这里直接上代码吧 ,我刚写的demo 看的时候看adapter 就行了 布局代码: <?xml version="1.0&quo ...
- Tablayout 修改默认选项页,或者跳转到指定的选项页
tablayout 的默认选项页为 viewpage.setCurrentItem(0) 如果想修改为第二页 viewpage.setCurrentItem(1) 即可 如果是根据跳转的情况来跳到不同 ...
- TabLayout 遇到那些坑 tab标签不显示问题
别人写的参考下,知道问题所在 如何使用 :注意事项 <?xml version="1.0" encoding="utf-8"?> <Relat ...
- hp-ux 集群,内存 小记
hp-ux 集群,内存 小记 -----查看hp 集群状态信息 # cmviewcl -v CLUSTER STATUS dbsvr up ...
- android自定义tab下划线变大,Android开发之设置TabLayout下方下划线的宽度
由于最近项目需要,需要设置tabLayout下方下划线的长度.笔者上网找了半天,也没有找到方法.后来了解到在源码中对tabLayout的下划线进行了设置.并没有方法可以直接设置. 然后,笔者看到了某位 ...
- Android Studio 第五十期 - 自定义TabLayout
代码已经整理好,效果如下图: code1: <com.ui.widget.UnAnimTabLayoutandroid:id="@+id/tab"android:layout ...
- TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题
场景 TabLayout+ViewPager+Fragment的使用过程中需要判断Fragment是否对用户可见,监听Fragment由不可见变为可见的事件 解决方案 重写Fragment的setUs ...
- <笔记2>numpy的生成随机数用法小记
numpy的生成随机数用法小记 numpy生成随机数 <以下图片来自黑马程序猿录播课程笔记> import numpy as np import random #random 生产随机数 ...
最新文章
- 静态方法、类方法、属性方法
- 《漫画算法2》源码整理-7 第K大的数字
- Spring AMQP ActiveMQ教程
- 卡尔曼滤波原理理解(1)
- X 射线成像 新型数字技术 —— CMOS 探测器
- webpack:Cannot find module 'extract-text-webpack-plugin'
- 刘奇:当今一切都要更实时、更弹性、更简单,TiDB 就是这样的基础设施 | TiDB DevCon 2020
- EXCEL对比重复数据
- 微信公众号开发诡异问题:errcode:40125,errmsg解决方案
- mac日历与iphone日历不无法同步问题
- C# 利用 OleDb 组件操作 Excel 进行文件读写操作
- eBPF: 深入探究 Map 类型
- # CF #807 Div.2(A - D)
- jenkins API 使用postman调用
- java基础知识之加强
- 西部之旅之------相机的选择
- tomcat 做为大型应用的配置
- 海思开发板海图科技测评,海图海思开发板怎么样
- 转:CDH--彻底解决问题----时钟异常
- Windows系统的消息