【问题标题】:How to detect a click on an already selected tab in TabLayout如何检测对 TabLayout 中已选择选项卡的点击
【发布时间】:2016-09-03 20:40:26
【问题描述】:

当我的问题是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();
            }
    }
});

谢谢!

【问题讨论】:

    标签: android android-tablayout


    【解决方案1】:

    基于花费约 10 秒阅读文档...致电setOnTabSelectedListener() on the TabLayout。传入OnTabSelectedListener 实现。你的事件回调方法is onTabReselected()

    【讨论】:

    • 是的..也许这就是为什么没有关于它的stackoverflow。对我来说不起作用,我无法触发事件。我会发布我的代码
    • 这是由于我的代码行的排序。我不知道为什么,但是如果在设置监听器后调用setupWithViewPager 它不起作用
    • @RenaudFavier:OnTabSelectedListener 的一个具体子类是ViewPagerOnTabSelectedListener。调用setupWithViewPager() 可能会替换您自己的听众。您需要弄清楚如何最好地处理您想要的事件,并且还要有 ViewPager 集成。
    • 很抱歉问你,但我不明白你的最后一句话:“你需要弄清楚如何最好地处理你想要的事件,并且还要有 ViewPager 集成”
    • 尝试使用 addOnTabSelectedListener 来避免冲突。
    【解决方案2】:

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

    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
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 2015-08-28
      • 2021-04-13
      • 2021-11-26
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      相关资源
      最近更新 更多