如何在Android中使用TabItem通过TabLayout

时间:2016-06-01 18:37:28

标签: android material-design android-tablayout androiddesignsupport

最近谷歌在android.support.design.widget.TabItem supportDesign添加了TabItemsdocumentation说:

  

TabItem是一个特殊的视图'它允许您为其声明标签项   布局中的TabLayout。实际上并未添加此视图   TabLayout,它只是一个允许设置标签项的虚拟对象   文字,图标和自定义布局。

但是当我向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> 时:

TabItem

没有显示任何内容(实际上Tabs的位置存在,但Icon / Text不存在)。有没有人知道如何通过xml使用%p I would like to make a #{link_to "link", foo_path} in my Rails app.

2 个答案:

答案 0 :(得分:3)

根据this回答,带有tabLayout.setupViewPager的TabItem发生冲突,图标消失。为了使它工作,你应该实现两个方法,如下面的,并避免使用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) {

                }
            });

答案 1 :(得分:0)

您应该为TabItems设置这些属性

android:layout_width
android:layout_height

干杯