Как установить приложение: tabBackground tabLayout Программно?

Это мой код: это tabLayout, который я setupWith помощью Viewpager

  <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" app:tabPaddingEnd="-1dp" app:tabBackground="@drawable/tab_color_selector" app:tabPaddingStart="-1dp" app:tabTextAppearance="@style/MineCustomTabText" /> 1  <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" app:tabPaddingEnd="-1dp" app:tabBackground="@drawable/tab_color_selector" app:tabPaddingStart="-1dp" app:tabTextAppearance="@style/MineCustomTabText" /> 1  <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" app:tabPaddingEnd="-1dp" app:tabBackground="@drawable/tab_color_selector" app:tabPaddingStart="-1dp" app:tabTextAppearance="@style/MineCustomTabText" /> 

Но как установить это программно?

  app:tabBackground="@drawable/tab_color_selector" 

Очень важно установить этот tabBackground программно, потому что я хочу, чтобы цвет изменялся в зависимости от темы, которую пользователь выбрал

Это то, что я уже пробовал, но никто из них не работает:

  tabLayout.setBackground(getResources().getDrawable(R.drawable.tab_color_selector)); tabLayout.setBackgroundResource((R.drawable.tab_color_selector)); tabLayout.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_color_selector)); tabLayout.setBackground(ContextCompat.getDrawable(this, R.drawable.tab_color_selector)); 

Заметка:

Это мой tab_color_selector.xml в drawable:

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

Если вы хотите изменить выбранный фон вкладки, вы можете использовать это: (Задайте свой пользовательский вид после настройки viewPager)

  TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(mViewPager); tabLayout.getTabAt(tabLayout.getSelectedTabPosition()).setCustomView(R.layout.your_layout); 

Если вы хотите изменить фон tabLayout, используйте это:

 TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setBackground(ContextCompat.getDrawable(this, R.drawable.your_drawable)); 

Если вы используете уровень API> 21, используйте его без ContextCompat следующим образом:

 tabLayout.setBackground(getDrawable(R.drawable.badge)); 

Пример:

раскладка

 <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:theme="@style/Toolbar" app:popupTheme="@style/Toolbar.Popup" /> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMaxWidth="0dp" app:tabGravity="fill" app:tabMode="fixed" /> </android.support.design.widget.AppBarLayout> 

Drawable

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/red" /> </shape>