Android TabLayout + ViewPager2使用
1、xml文件
<!--明细列表-->
<com.google.android.material.tabs.TabLayout
android:id="@+id/ty_purse_bill_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!--展示列表 -->
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/vp_purse_bill_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2、Java代码设置
private String[] mTabLayoutTitle = {"全部明细","待核明细","收入明细","支出明细"};
public void initView(View view) {
//禁用预加载
vpPurseBillList.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT);
//注册监听
vpPurseBillList.registerOnPageChangeCallback(onPageChangeCallback);
vpPurseBillList.setAdapter(new FragmentStateAdapter(this) {
@NonNull
@Override
public Fragment createFragment(int position) {
return FragmentDetailedBillList.newInstance(position);
}
@Override
public int getItemCount() {
return mTabLayoutTitle.length;
}
});
mTabLayoutMediator = new TabLayoutMediator(tyPurseBillList, vpPurseBillList, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
//自定义Tab
tab.setText(mTabLayoutTitle[position]);
}
});
//绑定
mTabLayoutMediator.attach();
}
public void onDestroy() {
//释放
mTabLayoutMediator.detach();
vpPurseBillList.unregisterOnPageChangeCallback(onPageChangeCallback);
super.onDestroy();
}