我将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()
之前调用它,那么这些行将不适用于您当前的tabLayout
或viewPager
。很奇怪我认为它只是用于连接您的TabLayout
和ViewPager
,而不是永久保存实际状态,您以后不能更改为ViewPager
。