当前位置:首页 > 技术知识 > 正文内容

Android TabLayout + ViewPager2使用

maynowei7个月前 (08-02)技术知识123

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();
    }

相关文章

Objective-C :Category(category什么意思)

Category 引入在日常的开发中,可能会碰到这样的需求:给某个类增加方法。比如说,需要给NSString类增加一个打印的方法。当然,我们可以新建一个类比如TestString,并继承NSStrin...

Android监听滚动视图(监听页面滚动)

Android UI Libs之Android-ObservableScrollView1. 说明Android-ObservableScrollView,顾名思义,Android上观察滚动的视图,可...

一文弄懂 GO 的 互斥锁 Mutex !(互斥锁的使用方法)

在 Go 语言并发编程中,互斥锁(Mutex)是一个非常重要的同步原语。本文将深入介绍 Mutex 的使用方法、实现原理以及最佳实践。1. 什么是 Mutex?Mutex(互斥锁)是一种用于多线程编程...

C++并发同步核心-mutex深度解析:守护共享数据的关键

在多线程编程中,当多个线程需要访问和修改共享数据时,如果没有任何同步机制,就可能发生数据竞争(Data Race),导致程序行为不可预测、数据损坏甚至崩溃。C++标准库通过<mutex>头...

C++ 原子操作与锁的深度解析:为什么原子操作并非万金油?

大噶好,我是henry,今天来和大家浅浅聊一下为啥C++原子操作并非万能钥匙,原因有三,且听我娓娓道来:一、原子操作的线程安全性C++11 的 std::atomic 确实为单个变量的线程安全操作提供...

什么?Java 中的锁还有状态?(java中的锁都有哪些类型)

线程如果锁住了某个资源,致使其他线程无法访问的这种锁被称为悲观锁,相反,线程不锁住资源的锁被称为乐观锁,而自旋锁是基于 CAS 机制实现的,CAS又是乐观锁的一种实现,那么对于锁来说,多个线程同步访问...