如何在TabLayout Android中收听滚动事件

问题描述 投票:2回答:3

我在我的项目中使用TabLayout,可能有超过10个TabItems。现在我想在用户滚动TabLayout时隐藏其他视图。

注意:我没有使用任何ViewPager。

android android-layout android-tablayout
3个回答
3
投票

View的每个实例都调用getViewTreeObserver()。你可以使用OnScrollChangedListener()为它添加一个addOnScrollChangedListener()

在你的情况下:

tabLayout.getViewTreeObserver().addOnScrollChangedListener(() -> {
        int scrollX = tabLayout.getScrollX(); // Current x scrolling position

        // We know that we have at least one child
        int maxScrollWidth = categoryTabLayout.getChildAt(0).getMeasuredWidth() - windowSize.x;

        // Do whatever you want here
    });

windowSize是从WindowManager访问的Point

private Point windowSize = new Point();
// Calculate the position if this window
getActivity().getWindowManager().getDefaultDisplay().getSize(windowSize);

通过使用上述方法,您将获得有关所需的正确滚动位置的更新


1
投票

TabLayout具有自己的选项卡更改侦听器回调功能。采用

onPageChange Listener:

TabLayout.TabLayoutOnPageChangeListener(TabLayout tabLayout)

查看此链接:OnTabChange Listener了解更多信息

onTabSelected监听器:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
    @Override
    public void onTabSelected(TabLayout.Tab tab){
        int position = tab.getPosition();
    }
});

检查更多:onTabSelected Listener


-1
投票

如果您将TabLayout与ViewPager一起使用,请执行以下操作:

viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);

然后你可以使用:

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener(){
        @Override
        public void onPageScrolled(int position, float positionOffset,
                int positionOffsetPixels){
        }

        @Override
        public void onPageSelected(int position){

        }

        @Override
        public void onPageScrollStateChanged(int state){

        }
    });

在onPageSelected()方法中,您可以根据显示的选项卡执行所需的操作。

© www.soinside.com 2019 - 2024. All rights reserved.