2015-08-15 3 views
18

Soll ich onClicks selbst einstellen, und wenn ja, wo soll ich das machen?Das Klicken auf Registerkarten ändert nicht die aktuelle Registerkarte, wenn Android TabLayout verwendet wird

<RelativeLayout 
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" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

<android.support.design.widget.TabLayout 
    android:id="@+id/sliding_tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:tabMode="scrollable" /> 

<android.support.v4.view.ViewPager 
    android:id="@+id/vpPager" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
</android.support.v4.view.ViewPager> 

+0

Zeigen Sie uns Ihren Java-Code. –

+1

Muss ich OnClick-Listener für jeden Tab implementieren? Oder wird es automatisch gemacht? –

Antwort

29

Das Hauptproblem ist, dass der ViewPager das TabLayout überlagert. Also, sollten Sie es unter TabLayout platzieren:

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/sliding_tabs"/> 

und von dem onCreate Methode Aktivitäten, rufen:

TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 

Für weitere Details lesen Sie in diesem Beispiel:

https://github.com/chrisbanes/cheesesquare/blob/master/app/src/main/java/com/support/android/designlibdemo/MainActivity.java

https://github.com/chrisbanes/cheesesquare/blob/master/app/src/main/res/layout/include_list_viewpager.xml

+0

Vielen Dank, lol mein Schlechter. –

+0

toll !! es hat funktioniert :) – Sadashiv

+0

Danke !! :) –

26

Versuchen Sie, die viewpagers aktuelle Element mit der Tab-Layouts Registerkarte ausgewählte Hörer einstellen.

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) 
     { 

     } 
    }); 
+1

Er bittet mich, viewPager final zu machen? Ich sollte total damit klar kommen? –

+0

Sie können es als endgültig festlegen oder Sie können ViewPager eine Variable der Klasse und nicht nur eine lokale Variable in OnCreateView oder wo auch immer Sie es einrichten – Dom

+0

ja ich habe gerade danke –

Verwandte Themen