更新时间:2022-11-26 10:18:01
另一方面,您可以通过以下代码使用 viewpager2:
In other hand you can use viewpager2 with this code:
myPagerAdapter.kt
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
class PagerAdapterAccounting internal constructor(fm: FragmentActivity) : FragmentStateAdapter(fm) {
override fun getItemCount(): Int {
return mFragmentList.size
}
override fun createFragment(position: Int): Fragment {
return mFragmentList[position]
}
private val mFragmentList = ArrayList<Fragment>()
private val mFragmentTitleList = ArrayList<String>()
fun addFragment(fragment: Fragment, title: String) {
mFragmentList.add(fragment)
mFragmentTitleList.add(title)
}
fun getTabTitle(position: Int): String {
return mFragmentTitleList[position]
}
}
用户界面:
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabIndicatorColor="@color/colorPrimaryDark"
app:tabIndicatorHeight="2dp"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/colorPrimary" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
及用法:
val fragmentAdapter = PagerAdapterAccounting(this) //must be a fragmentActivity
fragmentAdapter.addFragment(SampleFragment.newInstance(), "theSampleTitle1")
fragmentAdapter.addFragment(SampleFragment2.newInstance(), "theSampleTitle2")
viewPager.adapter = fragmentAdapter
TabLayoutMediator(tabLayout, viewPager,
TabLayoutMediator.TabConfigurationStrategy { tab, position -> tab.text = fragmentAdapter.getTabTitle(position) }).attach()
别忘了添加 appcompatX &材料库:
dont forget to add appcompatX & material lib:
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.2.0-alpha02'
希望能解决您的问题.