如何检测对 TabLayout 中已选定选项卡的点击
How to detect a click on an already selected tab in TabLayout
当 TabActivity
和 tabWidgets
时,我的问题已得到多次回答。但是我找不到关于相对较新的 TabLayout
视图的任何信息。
这很简单,就像 facebook 一样,我想点击一个已经选择的选项卡,让我的列表向上滚动到它的开头。但我不知道把我的听众放在哪里。
我试过 TabLayout
本身,mTabLayout.getChildAt()
和 TabLayout.getTabAt().getCustomView()
。
编辑:更正:
正如 CommonsWare 在其回答的评论中提到的那样,我不得不重写 "onTabSelected".
的行为
mTabLayout = (TabLayout) findViewById(R.id.tabs);
mTabLayout.setupWithViewPager(mViewPager);
for (int i = 0; i < mTabLayout.getTabCount(); i++) {
mTabLayout.getTabAt(i).setIcon(tabIcons[i]);
}
mTabLayout.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) {
if (tab.getPosition() == PAGE_FEED) {
((PagerNewsFeedFragment) mViewPagerAdapter.getRegisteredFragment(PAGE_FEED)).scrollToTop();
}
}
});
谢谢!
基于花费 ~10 秒阅读文档...调用 setOnTabSelectedListener()
on the TabLayout
. Pass in an OnTabSelectedListener
implementation. Your event callback method is onTabReselected()
。
为了不丢失默认行为,请像这样使用它
TabLayout tabLayout = findById(this, R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) {
@Override
public void onTabReselected(TabLayout.Tab tab) {
// Scroll to top or whatever
}
});
当 TabActivity
和 tabWidgets
时,我的问题已得到多次回答。但是我找不到关于相对较新的 TabLayout
视图的任何信息。
这很简单,就像 facebook 一样,我想点击一个已经选择的选项卡,让我的列表向上滚动到它的开头。但我不知道把我的听众放在哪里。
我试过 TabLayout
本身,mTabLayout.getChildAt()
和 TabLayout.getTabAt().getCustomView()
。
编辑:更正: 正如 CommonsWare 在其回答的评论中提到的那样,我不得不重写 "onTabSelected".
的行为mTabLayout = (TabLayout) findViewById(R.id.tabs);
mTabLayout.setupWithViewPager(mViewPager);
for (int i = 0; i < mTabLayout.getTabCount(); i++) {
mTabLayout.getTabAt(i).setIcon(tabIcons[i]);
}
mTabLayout.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) {
if (tab.getPosition() == PAGE_FEED) {
((PagerNewsFeedFragment) mViewPagerAdapter.getRegisteredFragment(PAGE_FEED)).scrollToTop();
}
}
});
谢谢!
基于花费 ~10 秒阅读文档...调用 setOnTabSelectedListener()
on the TabLayout
. Pass in an OnTabSelectedListener
implementation. Your event callback method is onTabReselected()
。
为了不丢失默认行为,请像这样使用它
TabLayout tabLayout = findById(this, R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) {
@Override
public void onTabReselected(TabLayout.Tab tab) {
// Scroll to top or whatever
}
});