2015-06-12 35 views
14

我正在使用Material Design库并使用CoordinatorLayout,AppBarLayout,RecyclerViewTabLayout创建布局。无法看到TabLayout设计支持库中的Tab指示符

我的问题是我无法在Tablayout中看到Tab指示符。下面是我在AppCompactActivity中使用的xml文件。

<android.support.design.widget.CoordinatorLayout 
     android:id="@+id/coodinate_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/btn_next_screen"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/list_recycle" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="30dp" 
      android:background="@color/white" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 

      /> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/abar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar_home" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="?attr/colorPrimary" 
       android:minHeight="?attr/actionBarSize" 
       app:layout_scrollFlags="scroll|enterAlways" 

       > 


      </android.support.v7.widget.Toolbar> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tab_layout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:tabBackground="@color/tab_bg" 
       app:tabIndicatorColor="@color/tab_indicator" 
       app:tabIndicatorHeight="5dp" 
       app:tabMode="fixed" 

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


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


     <android.support.design.widget.FloatingActionButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="15dp" 
      app:layout_anchor="@+id/list_recycle" 
      app:layout_anchorGravity="bottom|right" 
      android:id="@+id/floatin_ab_home" 
      app:fabSize="mini" 
      android:src="@drawable/ic_content_add" 

      /> 


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

下面是屏幕不显示选项卡指示器,可我所缺少任何一个知道。

Screen which missing Tab Indicator

回答

26

我觉得它在设计支持库错误。这 当您在同一时间

app:tabBackground="@color/tab_bg" 
app:tabIndicatorColor="@color/tab_indicator" 

同时适用财产背景颜色重叠标签指示。这就是选项卡指示不可见的原因。

如果删除tabBackground颜色属性,则可以看到指示符。

[上25-06-2015更新]

正如我所说它在设计支持库错误。我将它报告给android bug源。这里是参考文献https://code.google.com/p/android/issues/detail?id=176540

所以这个问题的状态是FutureRelease所以错误是固定的。它会在未来的图书馆。

[更新20-07-2015]

该bug是固定的,以V 22.2.1发行日期。你也可以在上面的链接上查看它。

+1

好的,我们的我检查和你有任何其他的方式来使工作背景颜色变化和选项卡指示器的颜色。 – Herry

+1

目前还没有解决方案。但是你可以将自定义视图传递给选项卡。因此,对于每个选项卡,您可以传递包含textView和ImageView的LinearLayout。您可以将背景颜色设置为LinearLayout。 – Moinkhan

+0

仍然坚持在v23 +太 –

0

您使用RecyclerView为主要内容,使用含有RecyclerView ViewPager,并确保你给的ViewPage属性app:layout_behavior="@string/appbar_scrolling_view_behavior"

+0

我已经尝试过你的建议ViewPager和里面第一个片段它有RecycleView但我的TabLayout无法显示选项卡指标。 – Herry

+0

你调用了'tabLayout.setupWithViewPager(viewPager);'? –

+0

请参阅此示例项目由克里斯巴恩 https://github.com/chrisbanes/cheesesquare.git –

0

使用APP1:tabIndicatorColor,而不是应用程序:tabIndicatorColor。当您使用该属性时,它将自动创建名称空间app1。

0

我刚刚修正了这个错误设置背景色编程

tabLayout.setBackgroundColor(getResources().getColor(R.color.primary)); 

或XML

android:background="@color/primary" 

但我不知道,当你设置背景颜色这种方式有什么问题

7

可以在XML使用下面的方法

1更改应用:tabIndicatorColor = “” 设置您的指示剂颜色

2在Tablayout创建的服装主题

<style name="AppTheme.TabStyle" parent="Widget.Design.TabLayout"> 
     <item name="tabTextAppearance">@style/AppTheme.TextStyle</item> 
     <item name="tabTextColor">@color/primaryDark</item> 
     <item name="tabSelectedTextColor">@color/white</item> 
     <item name="tabIndicatorColor">@color/primaryDark</item> 
     <item name="tabIndicatorHeight">3dp</item> 
     <item name="android:background">?attr/colorPrimary</item> 
    </style> 

    <style name="AppTheme.TextStyle" parent="TextAppearance.Design.Tab"> 
     <item name="android:textSize">14sp</item> 
     <item name="textAllCaps">true</item> 
    </style> 

集主题

0

在这里你去.. :)

变化您的属性

应用:tabBackground = “@颜色/ tab_bg”

的android:背景 = “@颜色/ tab_bg”

您的最终代码..

<android.support.design.widget.TabLayout 
      android:id="@+id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/tab_bg" 
      app:tabIndicatorColor="@color/tab_indicator" 
      app:tabIndicatorHeight="5dp" 
      app:tabMode="fixed"> 
</android.support.design.widget.TabLayout>