今天分享一个TabLayout+ViewPager2实现滑动切换Fragment,进行标签页的切换,也可以作为底部Tab作为首页切换
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tab_layout" />
</LinearLayout>
class Activity: BaseActivity(){
override val layout= R.layout.f_home
override fun initView() {
val titles = mutableListOf<String>()
val fragments = mutableListOf<Fragment>()
val string = SPUtils.getInstance().getString(Utils.USERDATA)
val user = Gson().fromJson(string, UserBean::class.java)
val split = user.roleNames.split(",")
titles.add(getString(R.string.home_initiate))
titles.add(getString(R.string.home_process))
titles.add(getString(R.string.home_receive))
fragments.add(InitiateFragment())
fragments.add(ProcessFragment())
fragments.add(ReceiveFragment())
vp.adapter = object : FragmentStateAdapter(this) {
override fun getItemCount() = fragments.size
override fun createFragment(position: Int) = fragments[position]
}
vp.offscreenPageLimit = fragments.size - 1
TabLayoutMediator(tab_layout, vp) { tab, position ->
tab.text = titles[position]
}.attach()
}
}