Android.support.design.widget.tablayout Вкладка Цвет индикатора

Я использую TabLayout и View Pager для отображения нескольких вкладок. Я хочу изменить выбранный индикатор вкладки. Я использовал app:tabIndicatorColor но цвет не меняется. Он показывает зеленоватый цвет. Я прочитал, что по умолчанию цвет tabIndicator установлен на color/accent , однако зеленоватый цвет не является моим цветом акцента. Мой xml выглядит следующим образом:

 <?xml version="1.0" encoding="utf-8"?> 

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:background="@color/primary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" app:tabIndicatorColor="@android:color/white" app:tabSelectedTextColor="@android:color/white" app:tabTextColor="@color/primary_light" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_gravity="start" app:headerLayout="@layout/header_layout" app:menu="@menu/menu_drawer" /> 

Что мне не хватает? Изображение здесь: http://imgur.com/uNcbviv

  <android.support.design.widget.TabLayout android:id="@+id/tabs" app:tabGravity="fill" app:tabMode="fixed" android:background="@color/material_blue_grey_800" app:tabIndicatorColor="@color/orange" app:tabSelectedTextColor="@color/orange" app:tabTextColor="@color/white" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.design.widget.TabLayout> 

Это может помочь вам.

  app:tabIndicatorColor="@color/orange" here is the line which change the color. 

Вы можете попробовать следующую настройку для своего TabLayout ,

 <android.support.design.widget.TabLayout xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@id/pages_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:tabIndicatorColor="@android:color/white" app:tabIndicatorHeight="4dp"/> 

Это должно решить цвет индикатора!

Согласно исходному коду TabLayout, tabTextColor должен ссылаться на цвет селектора вместо одного цвета. Это часть исходного кода, где он использует getColorStateList :

 if (a.hasValue(R.styleable.TabLayout_tabTextColor)) { // If we have an explicit text color set, use it instead mTabTextColors = a.getColorStateList(R.styleable.TabLayout_tabTextColor); } 

Поэтому вы должны определить свои цвета в файле, например, res/color/your_colors.xml :

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:color=""@color/primary_light"/> <item android:color="#0000ff"/> </selector> 

Вы можете установить цвет программно, как

 tabLayout.setSelectedTabIndicatorColor(R.color.black);