【问题标题】:Making TabLayout text bold使 TabLayout 文本加粗
【发布时间】:2016-06-07 10:25:09
【问题描述】:

我正在使用 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" />

【问题讨论】:

    标签: android android-tablayout


    【解决方案1】:

    首先这必须添加到styles.xml:

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

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

    那么样式必须使用app:tabTextAppearance而不是style属性应用于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" 
    app:tabTextAppearance="@style/TabLayoutTextStyle" />
    

    要启用全大写,您可以将以下内容添加到TabLayoutTextStyle

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

    【讨论】:

    • 当我还在 style 中声明 textColor 时,它崩溃了。
    【解决方案2】:
    1. 一种选择是在styles.xml中添加

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

      在与父级同名的“TextAppearance.Design.Tab”内

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

    并且在该样式中再次重定向到其他样式,仅用于文本外观:

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

    在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】:

      您需要声明以下样式

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        【解决方案5】:

        这是正确的做法。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-15
          • 2020-04-27
          • 2014-01-25
          • 1970-01-01
          • 1970-01-01
          • 2011-06-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多