【问题标题】:How use TabItem through TabLayout in AndroidAndroid中如何通过TabLayout使用TabItem
【发布时间】:2016-10-01 06:38:45
【问题描述】:

最近google在supportDesign中添加了android.support.design.widget.TabItem作为documentation说:

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>

什么都没有显示(实际上标签的位置存在,但图标/文本不存在)。有谁知道如何通过xml使用TabItem

【问题讨论】:

标签: android material-design android-tablayout androiddesignsupport


【解决方案1】:

基于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) {

                }
            });

【讨论】:

  • 请注意,不推荐使用 setOnTabSelectedListener,您应该使用 addOnTabSelectedListener,因为它已在 here 讨论过。
【解决方案2】:

您应该为 TabItems 设置这些属性

android:layout_width
android:layout_height

干杯

【讨论】:

  • 我设置了这个属性(事实上如果你不设置它们 A.S 会给你错误)
  • Hmm..strange.在我的例子中,我使用了一个包含 TabLayout 和 TabItems 的 RelativeLayout(你使用哪种布局并不重要)。我设置了这些属性和图标,一切都显示出来了。我正在使用 23.2.1 支持库
  • 可以放到github上吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 2018-02-06
  • 2019-08-17
  • 2012-03-06
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多