2015-08-15 93 views
18

我应该自己设置onClicks,如果是,我应该在哪里做?点击标签不使用Android TabLayout切换当前标签

<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

向我们展示您的java代码。 –

+1

我是否实际上必须为每个选项卡实施onClick侦听器?或者它是自动完成的? –

回答

29

主要的问题是,ViewPager覆盖TabLayout。所以,你应该把它放在下面TabLayout:

<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"/> 

而且从活动的onCreate方法,请拨打:

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

欲了解更多详情,请查看下面的例子:

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

太感谢你了,笑我的坏。 –

+0

太棒了!它的工作:) – Sadashiv

+0

谢谢! :) –

26

尝试设置使用的标签的布局选项卡中选择侦听viewpagers当前项。

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

它让我使viewPager最终?我应该完全用它去吧? –

+0

您可以将其设置为最终或你可以作出viewPager类的变量,而不仅仅是一个局部变量onCreateView或任何你正在设置它 – Dom

+0

是的,我只是做了那谢谢你 –