2016-02-24 20 views
5

Ich benutze das TabLayout aus der Android Design Support-Bibliothek und möchte seinen Text (Titel) stylen. Das macht es besonders fett. Wie erreiche ich das in XML nur?Making TabLayout Text fett

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

Antwort

15

Zuerst muss dies zum styles.xml hinzugefügt:

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

Auch wenn Sie nicht die Textgröße verändern wollen, können Sie müssen sind es in den Stilen sonst wird nichts angezeigt.

Dann muss der Stil auf die TabLayout mit app:tabTextAppearance nicht die style Attribut angewendet werden!

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

Um die ALLCAPS aktivieren Sie die folgenden Funktionen der TabLayoutTextStyle hinzufügen können:

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

es stürzte, arbeitete, als ich auch textColor im Stil erklärt. – Darpan

0

TabLayout Textstil in styles.xml


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

und setzen TabLayoutTextStyle als Stil hinzufügen TabLayout Eigenschaften yor.


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

Geht nicht ... Ich fand jedoch eine Lösung. – VSG24

+0

Folgen Sie diesem Link, sollte es vielleicht funktionieren ... [Styling Text auf TabLayout] (http://StackOverflow.com/A/31271945/4910513) –

0
  1. Eine Option ist in styles.xml

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

    inside „TextAppearance hinzuzufügen. Design.Tab "mit dem gleichen Namen wie die Mutter

  2. Andere Option: in Ihrem Layout zu Ihrem Stil lenken - sagen können Sie es

    myTabLayoutStyle nennen
    style="@style/myTabLayoutStyle" 
    

und innerhalb dieses Stils Umleitung wieder auf andere Art nur für Text Aussehen:

 <item name="tabTextAppearance">@style/myTabTextStyle</item> 

wie folgt aus:

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

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