2016-03-09 4 views
5

Meine Frage wurde mehrmals beantwortet, wenn es sich um eine TabActivity mit tabWidgets handelt. Aber ich konnte nichts über die relativ neue TabLayout Ansicht finden.So erkennen Sie einen Klick auf eine bereits ausgewählte Registerkarte in TabLayout

Es ist ziemlich einfach, wie Facebook, ich möchte ein Tippen auf eine bereits ausgewählte Registerkarte, um meine Liste bis zum Anfang zu scrollen. aber ich kann nicht herausfinden, wohin ich meinen Zuhörer bringen soll.

Ich probierte die TabLayout selbst, mTabLayout.getChildAt() und TabLayout.getTabAt().getCustomView().


EDIT: Korrektur: Wie CommonsWare im Kommentar ihrer Antwort erwähnt, hatte ich das Verhalten von „onTabSelected“ neu zu schreiben.

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(); 
      } 
    } 
}); 

Dank!

Antwort

13

Basierend auf ~ 10 Sekunden lesen Sie die Dokumentation ... rufen Sie setOnTabSelectedListener() on the TabLayout. Pass in einer OnTabSelectedListener Implementierung. Ihre Ereignisrückrufmethode is onTabReselected().

+1

verwendet Standard-yeah .. vielleicht deshalb nicht Stackoverflow darüber gibt. Funktioniert bei mir nicht, dachte ich, ich kann das Event nicht auslösen. Ich poste meinen Code –

+0

Es war wegen der Bestellung meiner Codezeilen. Ich weiß nicht warum, aber es funktioniert nicht, wenn '' 'setupWithViewPager''' nach dem Setzen des Listeners aufgerufen wird –

+0

@RenaudFavier: Die eine konkrete Unterklasse von 'OnTabSelectedListener' ist' ViewPagerOnTabSelectedListener'. Der Aufruf von 'setupWithViewPager()' ersetzt wahrscheinlich Ihren eigenen Listener. Sie müssen herausfinden, wie Sie das gewünschte Ereignis am besten handhaben können und auch die 'ViewPager'-Integration haben. – CommonsWare

1

zu verlieren, nicht das Verhalten es wie dies

TabLayout tabLayout = findById(this, R.id.tabs); 
tabLayout.setupWithViewPager(mViewPager); 
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) { 
    @Override 
    public void onTabReselected(TabLayout.Tab tab) { 
     // Scroll to top or whatever 
    } 
}); 
Verwandte Themen