Стиль вкладки TabLayout

Я использую новый TabLayout из библиотеки com.android.support:design . Я хочу изменить фон выбранных / невыбранных вкладок. Я смотрю на источники и обнаружил только атрибут tabBackground который меняет цвет всех вкладок и не контролирует выбранный цвет вкладки.

Как я могу управлять выбранным / невыбранным фоном вкладки?

Solutions Collecting From Web of "Стиль вкладки TabLayout"

Определение:

  <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 вы увидите внутренний TabView.class для фактического макета вкладки. Это тот же макет, что и любой другой с атрибутом isSelected . Выбор вкладки также повлияет на это, поэтому все, что вам нужно сделать, – создать выделение фонового рисунка

 <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 :

 <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 имеют одинаковую высоту. Таким образом, вы получаете довольно переходную анимацию таким образом.

Я тоже встретил эту проблему. Я просто искал tabIndicatorColor во всем проекте и нашел следующий код в некотором R.java :

  @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