2016-05-17 76 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() - >这个答案不适合你。请参考其他答案。 –