使用TabItem时如何将TabLayout与ViewPager同步

时间:2016-06-08 20:20:57

标签: android material-design android-tablayout android-support-design

我想将TabLayoutTabItem一起使用以下代码:

  <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/color_primary"
        app:tabGravity="fill"
        app:tabIndicatorColor="@color/white"
        app:tabMode="fixed"
        app:tabSelectedTextColor="@color/white"
        app:tabTextColor="@color/gray_light">

        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:icon="@drawable/ic_language" />


        <!-- other tabs ... -->


    </android.support.design.widget.TabLayout>

这是正确的向我展示图标:

enter image description here

但问题是当我想将TabLayout添加到ViewPager时,使用以下代码,所有这些代码都存在且可点击但会消失。我错过了什么吗?

 MyPagerAdapter adapter = new MyPagerAdapter(getFragmentManager());
 pager.setAdapter(adapter);

 tabLayout.setupWithViewPager(pager);

这就是结果:

enter image description here

2 个答案:

答案 0 :(得分:12)

这很有帮助:

///////同步!!!

替换

setupWithViewPager();

使用

tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout));

答案 1 :(得分:8)

tabLayout.setupWithViewPager(pager)要做的是在视图寻呼机的适配器上调用getPageTitle(),并使用返回的字符串创建选项卡。我建议不要拨打setupWithViewPager()。然后你需要做两件事:

  • 使用viewPager.addOnPageChangeListener实施方式调用OnPageChangeListener,该实施将根据所选页面选择标签。

  • 使用tabLayout.setOnTabSelectedListener实施方式致电OnTabSelectedListener,该实施将使用所选标​​签号称viewPager.setCurrentPage()

只需确保您的PagerAdapter计数与TabLayout中的标签数相符。