Search code examples
androidandroid-viewpager2

TabLayout ViewPager2 work with Fragment how to make fragment init load when select Tab


I have three Fragments

  1. HomeFragment
  2. DiscFrament
  3. MeFragment

work with ViewPager2 and TabLayout set smoothScroll true use defalut, but lazy loading not working

 TabLayoutMediator(tabLayout, viewPager) {
     tab, position ->
        tab.text = position.toString() 
            }.attach()

and what I need is

  1. I need smoothScroll the tab Indicator

  2. Lazy loading Fragment when I scroll the page or Select Tab the Fragment data load view show


Solution

  • tabLayout.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener{
                override fun onTabSelected(tab: TabLayout.Tab?) {
                    tab?:return
                    viewPager.setCurrentItem(tab.position, false)
                }
    
                override fun onTabUnselected(tab: TabLayout.Tab?) {
    
                }
    
                override fun onTabReselected(tab: TabLayout.Tab?) {
    
                }
    
            })
    

    the most important code is viewPager.setCurrentItem(tab.position, false) to override TabLayoutMediator addOnTabSelectedListener, so that it can be smooth scroll but also can lazy load