TabLayout(Androiddevise库)文本颜色

我正在使用Androiddevise库中的新TabLayout。 我设法设置textcolor状态列表使用tabLayout.setTabTextColors(colorstatelist)

我怎样才能实现相同的使用styles.xml?

通过XML属性:

 <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"/> 

此外,还有像tabIndicatorColor或tabIndicatorHeight属性进一步造型。

在代码中:

 tabLayout.setTabTextColors( getResources().getColor(R.color.your_unselected_text_color), getResources().getColor(R.color.your_selected_text_color) ); 

由于这种旧的方式从API 23开始被弃用,替代scheme是:

 tabLayout.setTabTextColors( ContextCompat.getColor(context, R.color.your_unselected_text_color), ContextCompat.getColor(context, R.color.your_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> 

这里是代码布局的代​​码

 <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/MyCustomTabLayout" /> 

上面的所有答案都是正确的,但我认为它更好地覆盖默认样式,只更改您想要更改的特定元素。 下面的例子将使文字变粗体:

 <style name="Widget.TabItem" parent="TextAppearance.Design.Tab"> <item name="android:textStyle">bold</item> </style> 

然后..,

 app:tabTextAppearance="@style/Widget.TabItem" 

你只需要重写android:textAppearance风格。 因为TabLayout使用textAppearance。 这里是风格的小代码片段。

 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Below will reference with our custom style --> <item name="android:textAppearance">@style/my_tab_text</item> </style> <style name="my_tab_text" parent="Base.TextAppearance.AppCompat"> <item name="android:textColor">@android:color/holo_blue_dark</item> </style> 

如果你不想引用你的Apptheme,你可以使用下面的代码片段直接指定到TabLayout。

  <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:tabTextAppearance="@style/my_tab_text" app:tabIndicatorHeight="48dp"/>