Использование viewpager2 с таблицей .. переключение с первой вкладки на последнюю вкладку, показывающее все средние вкладки(фрагменты) до достижения

#android-fragments #android-tablayout #android-viewpager2

Вопрос:

я использую viewpagr2 и tablayout в mainactivity ..у меня есть 5 фрагментов, прикрепленных к viewpager ..Приложение запускает и загружает 1 фрагмент fisrt ..но когда я нажимаю на последнюю вкладку (tab5) ..я вижу, что все средние вкладки(фрагменты) отображаются дробно и, наконец, достигают последнего фрагмента (вкладки) ..мой пользовательский интерфейс полностью отстает и не плавный ..может кто-нибудь мне помочь здесь .

вот код

 class MainActivity : AppCompatActivity() {

lateinit var bottomLayout : TabLayout
lateinit var mainPager : ViewPager2

lateinit var searchView: SearchView

@SuppressLint("UseCompatLoadingForDrawables")
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    bottomLayout = findViewById(R.id.bottom_tab)
    searchView = findViewById(R.id.search_view)
    mainPager=findViewById<ViewPager2>(R.id.mainViewPager2)
    val adapter= MainViewPagerAdapter(supportFragmentManager, lifecycle)
    adapter.createFragment(0)

    mainPager.adapter = adapter
    val tabTitles= arrayOf("Home", "Categories", "Brand","Cart","Account")

    val tabIcons = intArrayOf(R.drawable.ic_baseline_home_24, R.drawable.ic_baseline_categories, R.drawable.ic_brand,R.drawable.ic_baseline_add_shopping_cart_24,R.drawable.ic_baseline_account_circle_24)
   
    for((i, name) in tabTitles.withIndex())
      {
          //bottomLayout.getTabAt(i)?.text = tabTitles[i]
          println( bottomLayout.getTabAt(i)?.text)
          bottomLayout.addTab( 
    bottomLayout.newTab().setIcon(resources.getDrawable(tabIcons[i],null)))
      }
   mainPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
        override fun onPageSelected(position: Int) {
            bottomLayout.selectTab(bottomLayout.getTabAt(position))
        }
    })
    bottomLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
        override fun onTabReselected(p0: TabLayout.Tab?) {
        }

        override fun onTabUnselected(p0: TabLayout.Tab?) {

        }

        override fun onTabSelected(p0: TabLayout.Tab?) {
            if (p0 != null) {

                mainPager.currentItem = p0.position
            }

        }

    })


}
  
 

Код адаптера Viewpager

 class MainViewPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle): FragmentStateAdapter(fragmentManager, lifecycle) {

private val mFragments: List<Fragment> = ArrayList()
override fun getItemCount(): Int {
    return 5
}

override fun createFragment(position: Int): Fragment {
    return   when(position){
        0->{
            HomeFragment()
        }
        1->{
            CategoryFragment()
        }
        2->{
            BrandFragment()
        }
        3->{
            CartFragment()
        }
        4->{
            AccountFragment()
        }

        else->{
            HomeFragment()
        }

    }
  }
}