2016-05-17 73 views
1

android.support.design.widget.TabLayout無法正常使用ViewPager 如果我設置了tabLayout.setupWithViewPager(viewPager);然後tablayout視圖不顯示請找到附加的屏幕截圖。android.support.design.widget.TabLayout無法正常使用ViewPager

enter image description here

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:fitsSystemWindows="false" 
android:orientation="vertical" 
tools:context=".home.HomeActivity" 
tools:showIn="@layout/activity_home"> 

<android.support.design.widget.TabLayout 
    android:id="@+id/tab_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:elevation="6dp" 
    android:minHeight="?attr/actionBarSize" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/tab_layout"/> 

片段編碼:

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);  tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.feeds)));  tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.following)));  tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.you))); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    final ViewPager viewPager = (ViewPager) view.findViewById(R.id.pager); 
    final PageAdapter adapter = new PageAdapter(getChildFragmentManager(), 3); 
    viewPager.setOffscreenPageLimit(3); 
    viewPager.setAdapter(adapter); 
    tabLayout.setupWithViewPager(viewPager); 

當刪除 「tabLayout.setupWithViewPager(viewPager);」視圖工作正常。但是當我點擊各自的標籤時,我需要瀏覽相應的片段。

enter image description here

+2

看出來我這個答案[點擊這裏](http://stackoverflow.com/a/372​​49218/5148289)我相信它會幫助你。 –

+0

@vrund,謝謝!它的工作 –

+0

很高興聽到.. –

回答

2

在我來說,我通過更換解決了這個,

tabLayout.setupWithViewPager(viewPager); 

通過,

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

      } 
}); 

我希望這會幫助你。

0

短版的溶液(納文·庫馬爾·M):

viewPager.addOnPageChangeListener(
    new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
tabLayout.addOnTabSelectedListener(
    new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); 
0

櫃面如果你正在使用tabLayout內片段試試這個答案

可能的錯誤

你需要傳遞getChildFragmentManager( )到FragmentPagerAdapter

不是getSupportFragmentManager()或getFragme ntManager()

//wrong one 
ViewPagerAdapter adapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager()); 
//correct one 
ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); 

ViewPagerAdapter是FragmentPagerAdapter

public class ViewPagerAdapter extends FragmentPagerAdapter { 

} 
+0

我已經在代碼中添加了'getChildFragmentManager()'請看代碼,這不是這個問題的確切答案。 –

+0

@NaveenKumarM請再讀一遍。如果有人錯誤地使用getFragmentManager()或getSupportFragmentManager()標籤佈局不能在分段中工作,則爲Incase。那就是我爲什麼回答。如果你已經在使用getChildFragmentManager() - >這個答案不適合你。請參考其他答案。 –