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?
<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.
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)
);
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" />
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"
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"/>
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>
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>
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>