如何解决使用带有 tablayout 的 viewpager2 .. 在到达之前从第一个选项卡切换到最后一个选项卡,显示所有中间选项卡片段
我在 mainactivity 中使用 viewpagr2 和 tablayout ..我有 5 个片段附加到 viewpager ..App 启动并加载 1 个第一个片段..但是当我单击最后一个选项卡 (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()
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。