Na moje pytanie odpowiedziało kilka razy, gdy jest to TabActivity
z tabWidgets
. Ale nie mogłem znaleźć nic na temat relatywnie nowego widoku TabLayout
.Jak wykrywać kliknięcie na już wybranej zakładce w TabLayout
To całkiem proste, jak na facebooku, chcę dotknąć już wybranej zakładki, aby moja lista przewinęła się aż do początku. ale nie wiem, gdzie umieścić mojego słuchacza.
Próbowałem na samym TabLayout
, mTabLayout.getChildAt()
i na TabLayout.getTabAt().getCustomView()
.
EDIT: Korekta: Jak CommonsWare wymieniono w komentarzu do swojej odpowiedzi, musiałem przepisać zachowanie „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();
}
}
});
Dzięki!
Taa .. może dlatego nie ma stackoverflow o nim. Nie działa dla mnie, myślałem, nie mogę wywołać zdarzenia. Będę pisać mój kod –
Było to spowodowane zamawianiem moich linii kodu. Nie wiem dlaczego, ale nie działa, jeśli po ustawieniu detektora zostanie wywołany '' 'setupWithViewager''' –
@RenaudFavier: Jedną z podklas konkretnych' OnTabSelectedListener' jest 'ViewPagerOnTabSelectedListener'. Wywołanie "setupWithViewager()' prawdopodobnie zastąpi własnego detektora. Musisz ustalić, jak najlepiej sobie poradzić z danym wydarzeniem, a także mieć integrację z ViewPager. – CommonsWare