如何在Android中使用TabItem通过TabLayout

Ami*_*mir 5 android material-design androiddesignsupport android-tablayout

最近谷歌添加android.support.design.widget.TabItemsupportDesign作为文档说:

TabItem是一个特殊的"视图",允许您在布局中声明TabLayout的选项卡项.此视图实际上并未添加到TabLayout,它只是一个虚拟对象,允许设置选项卡项的文本,图标和自定义布局.

但是当我加入TabItems我的时候TabLayout:

 <android.support.design.widget.TabLayout
         android:layout_height="wrap_content"
         android:layout_width="match_parent">

     <android.support.design.widget.TabItem
             android:text="@string/tab_text"/>

     <android.support.design.widget.TabItem
             android:icon="@drawable/ic_android"/>

 </android.support.design.widget.TabLayout>
Run Code Online (Sandbox Code Playgroud)

没有显示任何内容(事实上Tabs的位置存在,但Icon/Text不存在).有没有人知道如何TabItem通过xml 使用?

Ami*_*mir 3

基于这个答案,TabItemtabLayout.setupViewPager有冲突并且图标消失。为了使其工作,您应该实现如下两种方法并避免使用setupViewPager方法:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                pager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                }

                @Override
                public void onPageSelected(int position) {
                    tabLayout.getTabAt(position).select();
                }

                @Override
                public void onPageScrollStateChanged(int state) {

                }
            });
Run Code Online (Sandbox Code Playgroud)

  • 请注意,setOnTabSelectedListener 已弃用,您应该使用 addOnTabSelectedListener,如[此处](http://stackoverflow.com/a/38498882/1476228)所述。 (2认同)