TabLayout (Android Design Library) Text Color
Via XML attributes:
<android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" app:tabGravity="fill" app:tabTextColor="@color/your_unselected_text_color" app:tabSelectedTextColor="@color/your_selected_text_color"/>
Additionally, there are attributes like tabIndicatorColor or tabIndicatorHeight for further styling.
In code:
tabLayout.setTabTextColors( getResources().getColor(R.color.your_unselected_text_color), getResources().getColor(R.color.your_selected_text_color));
Since this old way is deprecated as of API 23, the alternative is:
tabLayout.setTabTextColors( ContextCompat.getColor(context, R.color.your_unselected_text_color), ContextCompat.getColor(context, R.color.your_selected_text_color));
Here is snippet code to override text style and selected text color
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabTextAppearance">@style/MyCustomTabText</item> <item name="tabSelectedTextColor">@color/tab_text_act</item></style><style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button"> <item name="android:textSize">14sp</item> <item name="android:textColor">@color/tab_text</item></style>
And here is snippet code for layout
<android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/MyCustomTabLayout" />
All the answers above are correct but I just think its better to override the default styles and only change the specific element you want to change.Example below will make the text bold:
<style name="Widget.TabItem" parent="TextAppearance.Design.Tab"> <item name="android:textStyle">bold</item></style>
Then..,
app:tabTextAppearance="@style/Widget.TabItem"