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?
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)
}
}
}