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

问题描述 投票:3回答:2

我想用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

android material-design android-tablayout android-support-design
2个回答
8
投票

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

  • 使用viewPager.addOnPageChangeListener实现调用OnPageChangeListener,该实现将根据所选页面选择选项卡。
  • 使用tabLayout.setOnTabSelectedListener实现调用OnTabSelectedListener,该实现将使用选定的选项卡号调用viewPager.setCurrentPage()

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


11
投票

这很有帮助:

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

更换

setupWithViewPager();

tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout));
© www.soinside.com 2019 - 2024. All rights reserved.