使TabLayout文本变为粗体

时间:2016-02-24 21:50:04

标签: android android-tablayout

我正在使用Android设计支持库中的TabLayout,并希望设置其文本样式(标题)。特别是大胆。如何仅在 XML 中实现这一目标?

<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
app:tabTextColor="@color/white"
app:tabSelectedTextColor="@color/white"
app:tabIndicatorColor="@color/accent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="3dp" />

5 个答案:

答案 0 :(得分:25)

首先必须将它添加到styles.xml:

<style name="TabLayoutTextStyle">
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">bold</item>
</style>

即使您不想改变文字大小,必须将其包含在样式中,否则不会显示任何内容。

然后必须使用TabLayout而非app:tabTextAppearance属性将样式应用于style

<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
app:tabTextColor="@color/white"
app:tabSelectedTextColor="@color/white"
app:tabIndicatorColor="@color/accent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="3dp" 
app:tabTextAppearance="@style/TabLayoutTextStyle" />

要启用allcaps,您可以将以下内容添加到TabLayoutTextStyle

<item name="android:textAllCaps">true</item>

答案 1 :(得分:4)

您需要声明以下样式

<style name="TabLayoutTextStyle">
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@color/black</item>
</style>

现在您可以像这样使用它:

然后必须使用app:tabTextAppearance而不是style属性将样式应用于TabLayout!

<android.support.design.widget.TabLayout
     android:layout_width="match_parent"
     app:tabTextColor="@color/white"
     app:tabSelectedTextColor="@color/white"
     app:tabIndicatorColor="@color/accent"
     android:layout_height="wrap_content"
     app:tabTextAppearance="@style/TabLayoutTextStyle" />

答案 2 :(得分:3)

  1. 一个选项是添加In styles.xml

      <item name="android:textStyle">bold</item> 
    

    内部&#34; TextAppearance.Design.Tab&#34;与父母同名的

    <style name="TextAppearance.Design.Tab" parent="TextAppearance.Design.Tab">
      <item name="android:textSize">15sp</item>
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">?android:textColorSecondary</item>
      <item name="textAllCaps">true</item>
      <item name="android:singleLine">true</item>
    </style>
    
  2. 其他选项:在您的布局中直接指向您的风格 - 让我们称之为myTabLayoutStyle

     style="@style/myTabLayoutStyle"
    
  3. 并且该样式内部再次重定向到其他样式,仅用于文本外观:

          <item name="tabTextAppearance">@style/myTabTextStyle</item>
    
    像那样:

      <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        style="@style/myTabLayoutStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        android:background="?attr/colorPrimary"
        android:elevation="600dp"
        android:minHeight="?attr/actionBarSize"
        app:tabGravity="fill"
        android:singleLine="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
    

    inside styles.xml:

      <style name="myTabLayoutStyle" 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">3dp</item>
        <item name="tabPaddingEnd">3dp</item>
        <item name="android:singleLine">true</item>
        <item name="tabBackground">?attr/selectableItemBackground</item>
        <item name="tabSelectedTextColor">?android:textColorPrimary</item>
        <item name="tabTextAppearance">@style/myTabTextStyle</item>
      </style>
    
       <style name="myTabTextStyle">
           <item name="android:textSize">15sp</item>
           <item name="android:textStyle">bold</item>
           <item name="android:textColor">?android:textColorSecondary</item>
           <item name="textAllCaps">true</item>
           <item name="android:singleLine">true</item>
      </style>
    

答案 3 :(得分:0)

在styles.xml中添加TabLayout文本样式

<style name="TabLayoutTextStyle">
    <item name="android:textStyle">bold</item>
</style>

并将TabLayoutTextStyle设置为与TabLayout属性相关的样式。

<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
app:tabTextColor="@color/white"
app:tabSelectedTextColor="@color/white"
app:tabIndicatorColor="@color/accent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="3dp" 
style="@style/TabLayoutTextStyle" />

答案 4 :(得分:0)

这是正确的方法。

<LinearLayout 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="match_parent"
    android:orientation="vertical"
    android:baselineAligned="false">

    <android.support.design.widget.TabLayout
        android:id="@+id/tablayout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        app:tabTextAppearance="@style/TextAppearance.Bold"
        app:tabTextColor="@color/grey"
        app:tabSelectedTextColor="@color/black" />

</LinearLayout>