2017-01-10 3 views
2

Я использую TabLayout в моем проекте, который может иметь более 10 TabItems. Теперь я хотел скрыть другое представление, когда пользователь прокручивает TabLayout.Как прослушать событие прокрутки в TabLayout Android

Примечание: я не использую ViewPager.

+0

ты по хотите скрыть другую вкладку? –

+0

нет. а не вкладку. другой вид. – kcg

+0

вкладка может быть прокручена и нажата ... у вас есть желание скрыть представления для обоих случаев? – rafsanahmad007

ответ

-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(), вы можете сделать действие вам в зависимости от отображения вкладки.

1

TabLayout уже имеет функциональность для обратного вызова прослушивателя вкладок. Использование

onPageChange СЛУШАТЕЛЬ:

TabLayout.TabLayoutOnPageChangeListener(TabLayout tabLayout) 

Проверить для более: OnTabChange Listener

onTabSelected Listener:

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

Проверить больше: onTabSelected Listener

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

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

Используя подход выше вы будете иметь новую информацию о правильном положении прокрутки нужно