首页 > 解决方案 > 未以编程方式选择带有 ViewPager 的 TabLayout

问题描述

我已经Tabs设置了ViewPager。如果我在应用程序中选择选项卡或通过滑动页面,它将触发onTabSelected(),但如果我以编程方式选择第一个选项卡,则不会触发此功能。我需要以编程方式设置它,因为我想按选项卡位置设置按钮可见性(如果选择了第一个选项卡,则某些按钮不可见)。

pagerAdapter = CustomViewPagerAdapter(pageList)
viewPager.adapter = pagerAdapter
tabLayout.setupWithViewPager(viewPager)
tabLayout.addOnTabSelectedListener(object: TabLayout.ViewPagerOnTabSelectedListener(viewPager){
   override fun onTabReselected(tab: TabLayout.Tab?) {}
   override fun onTabUnselected(tab: TabLayout.Tab?) {}
   override fun onTabSelected(tab: TabLayout.Tab?) {
      App.log("btnVisibility: onSelected")
      setButtonsVisibility()
   }
})

viewPager.currentItem = 0
//TRIED THIS ONE TOO - NOT WORKING
tabLayout.getTabAt(0)?.select()

更新:

找到的解决方案:tabLayout.setupWithViewPager(viewPager)必须在所有选项卡/页面更改后调用。如果您之前调用它,viewPager.currentItem = 0否则tabLayout.getTabAt(0)?.select()这些行将不适用于您当前的tabLayoutor viewPager。很奇怪。我认为它只是用来连接你的TabLayout,而ViewPager不是永久保存实际状态,以后不能更改ViewPager

标签: androidandroid-layoutandroid-viewpagerandroid-tablayout

解决方案


推荐阅读