web-dev-qa-db-fra.com

TabLayout (Android Design Library) Couleur du texte

J'utilise le nouveau TabLayout de la bibliothèque de conception Android. J'ai réussi à définir la statistique statcolor en utilisant tabLayout.setTabTextColors(colorstatelist)

Comment puis-je obtenir la même chose en utilisant styles.xml?

83
sebastian

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

En outre, il existe des attributs tels que tabIndicatorColor ou tabIndicatorHeight pour un style ultérieur.

Dans du code:

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

Puisque cette ancienne méthode est obsolète à partir de l'API 23, l'alternative est la suivante:

tabLayout.setTabTextColors(
    ContextCompat.getColor(context, R.color.your_unselected_text_color),
    ContextCompat.getColor(context, R.color.your_selected_text_color)
);
251
Fe Le

Voici le code d'extrait pour remplacer le style de texte et la couleur de texte sélectionnée

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

Et voici le code d'extrait pour la mise en page

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

Toutes les réponses ci-dessus sont correctes, mais je pense qu'il est préférable de remplacer les styles par défaut et de ne modifier que l'élément spécifique que vous souhaitez modifier. L'exemple ci-dessous rendra le texte en gras:

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

Ensuite..,

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

Vous devez simplement remplacer le style Android:textAppearance. Parce que TabLayout utilise textAppearance. voici le petit code de style.

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

Et si vous ne voulez pas faire référence à votre Apptheme vous pouvez directement spécifier TabLayout en utilisant le snippet.

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

Pour les onglets personnalisés, nous devons remplacer les éléments suivants: 1) app: tabTextColor // for_unselected_text "

        <Android.support.design.widget.TabLayout
            Android:id="@+id/tabs"
            style="@style/MyCustomTabLayout"
            Android:layout_width="match_parent"
            Android:layout_height="56dp"
            Android:background="?attr/colorPrimary"
            Android:scrollbarSize="24sp"
            Android:visibility="gone"
            app:tabTextColor="@color/white_40_percent"
            app:tabMode="scrollable" />

2) tabSelectedTextColor // pour la couleur d'onglet sélectionnée 3) tabIndicatorColor // couleur pour l'indicateur d'onglet

   <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="Android:textColorPrimary">@color/white</item>
    <item name="tabSelectedTextColor">@color/white</item>
    <item name="tabTextAppearance">@style/TabTextStyle</item>
    <item name="tabIndicatorColor">?attr/colorAccent</item>
    <item name="tabIndicatorHeight">4dp</item>
    <item name="Android:tabStripEnabled">true</item>
    <item name="Android:padding">0dp</item>
  </style>



<style name="TabTextStyle">
    <item name="Android:fontFamily">@string/font_fontFamily_medium</item>
    <item name="Android:textStyle">bold</item>
    <item name="Android:textAllCaps">true</item>
    <item name="Android:textColor">@color/tab_text_color</item>
    <item name="Android:textSize">16sp</item>
</style>

tab_text_color.xml

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item Android:color="@color/white_40_percent"Android:state_selected="false"/>
  <item Android:color="@color/white_100_percent"Android:state_selected="true"/>
 </selector>
1
Sandeep Sankla

Manière facile et parfaite:

Dans le fichier xml ::

<Android.support.design.widget.TabLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:tabTextAppearance="@style/TabText"/>

Dans le fichier values-styles:

note: "cairo_semibold" est une police externe, vous pouvez la remplacer par votre police.

<style name="TabText" parent="TextAppearance.Design.Tab">
    <item name="Android:textColor">#1f57ff</item>
    <item name="Android:textSize">14sp</item>
    <item name="Android:fontFamily">@font/cairo_semibold</item>
</style>
0
osama astal

Le meilleur ou le moyen le plus simple et le plus simple est de créer une barre d’apparition personnalisée

 <?xml version="1.0" encoding="utf-8"?>
    <Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="?android:attr/actionBarSize"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:background="@color/colorAccent"
    app:theme="@style/myCustomAppBarTheme"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"><RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <ImageButton
            Android:id="@+id/btn_back"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentLeft="true"
            Android:background="@Android:color/transparent"
            Android:src="@mipmap/ic_launcher" />

        <TextView
            Android:id="@+id/txt_title"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_centerVertical="true"
            Android:layout_marginLeft="16dp"
            Android:layout_marginStart="16dp"
            Android:layout_toEndOf="@+id/btn_back"
            Android:layout_toRightOf="@+id/btn_back"
            Android:text="Title"
            Android:textColor="@Android:color/white"
            Android:textSize="20sp"
            Android:textStyle="bold" />

    </RelativeLayout>
    </Android.support.v7.widget.Toolbar>
0
Vithani Ravi