[英]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.