2016-07-29 7 views
2

Ich folgte dieser Anleitung Android TabLayout Example using ViewPager and Fragments Android TabLayout Exampledie Ansicht Pager Fragment Swiping nicht die Registerkarten bewegen

Aber wenn ich das Fragment der Ansicht Pager wird sich nicht bewegen streichen. Ich bekomme dieses Ergebnis output I got Ich folgte dem oben genannten Tutorial nur keine Änderungen, aber wenn wir das Fragment wischen, werden sich die Tabs nicht verschieben. Bitte hilf mir. Danke im Voraus.

Dies ist der activity_main.xml

<LinearLayout 
android:id="@+id/main_layout" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity"> 

<!-- our toolbar --> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:minHeight="?attr/actionBarSize" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

<!-- our tablayout to display tabs --> 
<android.support.design.widget.TabLayout 
    android:id="@+id/tabLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:minHeight="?attr/actionBarSize" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

<!-- View pager to swipe views --> 
<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent"/> 

</LinearLayout> 
+0

Code anzeigen. Außerdem gibt es in Android Studio eine Standardvorlage. Wenn Sie eine Aktivität erstellen, wählen Sie Aktivität mit Registerkarten + ViewPager und Sie erhalten einen funktionierenden Code, den Sie untersuchen und daraus lernen können. – Vucko

+0

Ich folgte oben Tutorial perfekt funktioniert, außer diesem Problem. Wenn ich wische, werden die Tabs nicht wechseln, warum? –

+0

Ich weiß nicht, ohne Ihren Code. Niemand tut. Bitte teilen Sie den relevanten Code mit (insbesondere Xml, wo Sie TabLayout deklariert haben). – Vucko

Antwort

0
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
3

Die Seiten auf dem viewpager swiping ist, das ist, warum es auf der Seite "Tab 3" ist zeigt. Dies geschieht aufgrund der Wischeigenschaften von ViewPager. Aber die Registerkarte ändert sich nicht entsprechend, deshalb wird sie auf TAB1 angezeigt. Weil zwischen tablayout und viewpager keine Verbindung besteht.

Wenn Sie einen ViewPager zusammen mit diesem Registerkartenlayout verwenden, können Sie setupWithViewPager (ViewPager) aufrufen, um die beiden miteinander zu verbinden, wie beschrieben unter here.

Also keine Notwendigkeit addTab() aufzurufen.

mTabLayout = (TabLayout)findViewById(R.id.tabLayout); 
mViewPager = (ViewPager)findViewById(R.id.pager); 

//mTabLayout.addTab(mTabLayout.newTab().setText("Tab1")); 
//mTabLayout.addTab(mTabLayout.newTab().setText("Tab2")); 
//mTabLayout.addTab(mTabLayout.newTab().setText("Tab3")); 
//mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

Pager pager = new Pager(getSupportFragmentManager(),3); 
mViewPager.setAdapter(pager); 

mTabLayout.setupWithViewPager(mViewPager); 

Dieses Tablayout wird automatisch von den Seitentiteln der PagerAdapter ausgefüllt. Dazu

class Pager extends FragmentStatePagerAdapter{... 

@Override 
public CharSequence getPageTitle(int position) { 
    super.getPageTitle(position); 

    switch (position){ 
     case 0: 
      return "Tab1"; 
     case 1: 
      return "Tab2"; 
     case 2: 
      return "Tab3"; 

     default: 
      return null; 
    } 
} 
Verwandte Themen