簡體   English   中英

如何在TabLayout Android中監聽滾動事件

[英]How to listen scrolling event in a TabLayout Android

我在我的項目中使用TabLayout,其中可能有10個以上的TabItem。 現在,我想在用戶滾動TabLayout時隱藏其他視圖。

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

每個View實例都調用getViewTreeObserver() 您可以使用addOnScrollChangedListener()添加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);

通過使用上述方法,您將獲得有關所需正確滾動位置的更新

TabLayout具有其自身的功能,可用於制表符更改偵聽器回調。 采用

onPageChange偵聽器:

TabLayout.TabLayoutOnPageChangeListener(TabLayout tabLayout)

檢查此鏈接: OnTabChange偵聽器以獲取更多信息

onTabSelected偵聽器:

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

檢查更多: onTabSelected偵聽器

如果您將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()方法中,您可以根據顯示的選項卡執行所需的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM