web-dev-qa-db-fra.com

Comment utiliser Tablayout avec ViewPager2 In Android

Je souhaite utiliser le composant com.google.Android.material.tabs.TabLayout Avec la nouvelle mise en œuvre ViewPager de Android androidx.viewpager2.widget.ViewPager2. Cependant, la méthode setupWithViewPager(..) fourni par TabLayout prend uniquement en charge l'ancienne mise en œuvre ViewPager. Existe-t-il un moyen de lier un TabLayout à un composant ViewPager2 Facilement?

47
Ugurcan Yildirim

Si votre titre de tabulation provient de string.xml.
[.____] Vous pouvez mettre le fragment avec title ensemble dans un List puis définissez le titre de TabLayoutMediator. Il vous aide facilement à réorganiser, supprimer ou ajouter un nouveau fragment

class MyFragment : Fragment() {

    override fun onCreateView(...): View? {
        ...

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

    private inner class PagerAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {
        val pages = listOf(
            Pair(HomeFragment.newInstance(), R.string.home),
            Pair(GraphFragment.newInstance(), R.string.graph),
            Pair(SettingFragment.newInstance(), R.string.setting),
        )

        override fun createFragment(position: Int): Fragment {
            return pages[position].first
        }

        override fun getItemCount(): Int {
            return pages.count()
        }

        fun getTabTitle(position: Int): String {
            return getString(pages[position].second)
        }
    }
}
0
Phan Van Linh