La mia domanda ha ricevuto risposta diverse volte quando si tratta di un TabActivity
con tabWidgets
. Ma non sono riuscito a trovare nulla sulla nuova vista relativamente nuova TabLayout
.Come rilevare un clic su una scheda già selezionata in TabLayout
È piuttosto semplice, come facebook, voglio toccare un tab già selezionato per far scorrere la lista fino all'inizio. ma non riesco a capire dove mettere il mio ascoltatore.
Ho provato su TabLayout
stesso, mTabLayout.getChildAt()
e su TabLayout.getTabAt().getCustomView()
.
EDIT: Correzione: Come CommonsWare menzionate nelle commento della risposta, ho dovuto riscrivere il comportamento di "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();
}
}
});
Grazie!
yeah .. forse è per questo che non c'è StackOverflow su di esso. Non funziona per me pensato, non posso attivare l'evento. Pubblicherò il mio codice –
Era dovuto all'ordinamento delle mie linee di codice. Non so perché, ma non funziona se '' 'setupWithViewPager''' viene chiamato dopo aver impostato l'ascoltatore –
@RenaudFavier: La sottoclasse concreta di' OnTabSelectedListener' è 'ViewPagerOnTabSelectedListener'. Chiamare 'setupWithViewPager()' probabilmente sostituisce il tuo ascoltatore. Dovrai elaborare il modo migliore per gestire l'evento che desideri e avere anche l'integrazione con 'ViewPager'. – CommonsWare