未通过编程选择使用ViewPager的TabLayout

时间:2019-05-27 09:45:35

标签: android android-layout android-viewpager android-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 = 0tabLayout.getTabAt(0)?.select()之前调用它,那么这些行将不适用于您当前的tabLayoutviewPager。很奇怪我认为它只是用于连接您的TabLayoutViewPager,而不是永久保存实际状态,您以后不能更改为ViewPager

0 个答案:

没有答案