TabLayout选项卡样式

我使用com.android.support:design库中的新TabLayout 。 我想更改选定/未选中标签的背景。 我看源代码,发现只有tabBackground属性,改变所有的标签颜色,并不控制选定的标签颜色。

我怎样才能控制选定/未select的标签背景?

定义:

  <style name="AppTabLayout" parent="Widget.Design.TabLayout"> <item name="tabMaxWidth">@dimen/tab_max_width</item> <item name="tabIndicatorColor">?attr/colorAccent</item> <item name="tabIndicatorHeight">4dp</item> <item name="tabPaddingStart">6dp</item> <item name="tabPaddingEnd">6dp</item> <item name="tabBackground">?attr/selectableItemBackground</item> <item name="tabTextAppearance">@style/AppTabTextAppearance</item> <item name="tabSelectedTextColor">@color/range</item> </style> <!-- for text --> <style name="AppTabTextAppearance" parent="TextAppearance.Design.Tab"> <item name="android:textSize">12sp</item> <item name="android:textColor">@color/orange</item> <item name="textAllCaps">false</item> </style> 

应用:

 <android.support.design.widget.TabLayout style="@style/AppTabLayout" app:tabTextAppearance="@style/AppTabTextAppearance" android:layout_width="match_parent" .... /> 

如果你看一下TabLayout.class你会注意到tab的实际布局的内部TabView.class 。 它与isSelected属性的布局相同。 select选项卡也会对此产生影响,所以您只需要创buildselect器背景可绘制

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@color/tab_bg_selected"/> <item android:drawable="@color/tab_bg_unselected"/></selector> 

并将其附加到tabBackground属性,例如像XML一样

 <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:tabBackground="@drawable/tab_bg" app:tabIndicatorHeight="4dp"/> 

我读了如何样式的ActionBar,在选定的选项卡上的标签背景,并找出如何做。 这真的是类似的问题,但我特别为TabLayoutfind了很棒的解决scheme:

 <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/tab_layout_color" app:tabIndicatorHeight="48dp" app:tabIndicatorColor="@color/selected_tab_color" /> 

请注意layout_heighttabIndicatorHeight具有相同的高度。 所以你用这种方式得到漂亮的过渡animation。

我也遇到过这个问题。 我在整个项目中search了tabIndicatorColor ,并在R.javafind了下面的代码:

  @see #TabLayout_tabBackground @see #TabLayout_tabContentStart @see #TabLayout_tabGravity @see #TabLayout_tabIndicatorColor @see #TabLayout_tabIndicatorHeight @see #TabLayout_tabMaxWidth @see #TabLayout_tabMinWidth @see #TabLayout_tabMode @see #TabLayout_tabPadding @see #TabLayout_tabPaddingBottom @see #TabLayout_tabPaddingEnd @see #TabLayout_tabPaddingStart @see #TabLayout_tabPaddingTop @see #TabLayout_tabSelectedTextColor @see #TabLayout_tabTextAppearance @see #TabLayout_tabTextColor 

所以问题解决了。 愿这对你有所帮助。
即我使用IDEA