gpt4 book ai didi

android - 仅切换选项卡时调用 TabLayoutOnPageChangeListener onTabReselected

转载 作者:行者123 更新时间:2023-11-29 01:28:02 26 4
gpt4 key购买 nike

我像这样用 TabLayout 设置 ViewPager:

tabLayoutOnPageChangeListener = new TabLayout.TabLayoutOnPageChangeListener(tabLayout);

mViewPager.addOnPageChangeListener(tabLayoutOnPageChangeListener);

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(TabLayout.Tab tab) {

}

@Override
public void onTabReselected(TabLayout.Tab tab) {
doSomething();
}
});

所以当我滑动 ViewPager 时,TabLayout 将更新其指示器和选定的选项卡;当一个选项卡被选中时,ViewPager 将切换到正确的页面。

但这会导致调用 onTabReselected,即使我没有重新选择选项卡,因为在 onTabSelected 之后,mViewPager.setCurrentItem() 将触发再次选择选项卡(通过 tabLayoutOnPageChangeListener)。我必须这样做:

@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.removeOnPageChangeListener(tabLayoutOnPageChangeListener);
mViewPager.setCurrentItem(tab.getPosition());
mViewPager.addOnPageChangeListener(tabLayoutOnPageChangeListener);
}

在调用 setCurrentItem() 时临时删除监听器。

是否有任何“更正确”的方式让 ViewPagerTabLayout 一起工作?我正在使用最新的 v23.0.1 设计支持库。

最佳答案

TabLayoutsetupWithViewPager方法可用于此目的。您应该能够用 tabLayout.setupWithViewPager(mViewPager) 替换您的代码。

关于android - 仅切换选项卡时调用 TabLayoutOnPageChangeListener onTabReselected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32766757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com