如何在TabLayout中检测已选择的选项卡上的单击

时间:2016-03-09 15:35:06

标签: android android-tablayout

TabActivitytabWidgets时,我的问题已多次得到解答。但我找不到任何关于相对较新的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();
            }
    }
});

谢谢!

2 个答案:

答案 0 :(得分:14)

基于花费大约10秒阅读文档...致电setOnTabSelectedListener() on the TabLayout。通过OnTabSelectedListener实施。您的事件回调方法is onTabReselected()

答案 1 :(得分:1)

为了不失去默认行为,请像这样使用它

f:format.bytes