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,在选定的选项卡上的标签背景,并找出如何做。 这真的是类似的问题,但我特别为TabLayout
find了很棒的解决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_height
和tabIndicatorHeight
具有相同的高度。 所以你用这种方式得到漂亮的过渡animation。
我也遇到过这个问题。 我在整个项目中search了tabIndicatorColor
,并在R.java
find了下面的代码:
@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