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

Android TabLayout + ViewPager2使用

maynowei11个月前 (08-02)技术知识184

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

相关文章

Windows 加密盘BitLocker爆锁屏绕过严重漏洞

BitLocker Windows内置现代设备级数据加密保护功能,BitLocker与Windows内核深度集成。有大量的企业和个人使用BitLocker加密自己关键数据,以防止数据泄密。BitLoc...

C# 中的多线程同步机制:lock、Monitor 和 Mutex 用法详解

在多线程编程中,线程同步是确保多个线程安全地访问共享资源的关键技术。C# 提供了几种常用的同步机制,其中 lock、Monitor 和 Mutex 是最常用的同步工具。本文将全面介绍这三种同步机制的用...

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

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

掌握C语言多线程:高效并发编程指南

一、多线程基础概念介绍多线程编程是现代软件开发中提高程序性能和响应性的重要技术。在C语言中,pthread(POSIX Threads)库是实现多线程编程的标准工具。本节将通俗易懂地介绍多线程的核心概...

Qt QWaitCondition 的正确使用方法

简单用法QWaitCondition 用于多线程的同步,一个线程调用QWaitCondition::wait() 阻塞等待,直到另一个线程调用QWaitCondition::wake() 唤醒才继续往...

Linux系统编程:条件变量为什么要用锁

条件变量可以解决线程同步和共享资源访问的问题,条件变量是对互斥锁的补充,它允许一个线程阻塞并等待另一个线程发送的信号,当收到信号时,阻塞的线程被唤醒并试图锁定与之相关的互斥锁。具体定义如下:等待:in...