Ayant le problème que le nouveau TabLayout utilise la couleur de l'indicateur de la valeur colorAccent
, j'ai décidé de creuser dans l' android.support.design.widget.TabLayout
implémentation, constatant qu'il n'y avait pas de méthodes publiques pour personnaliser cela. Cependant, j'ai trouvé cette spécification de style du TabLayout:
<style name="Base.Widget.Design.TabLayout" parent="android:Widget">
<item name="tabMaxWidth">@dimen/tab_max_width</item>
<item name="tabIndicatorColor">?attr/colorAccent</item>
<item name="tabIndicatorHeight">2dp</item>
<item name="tabPaddingStart">12dp</item>
<item name="tabPaddingEnd">12dp</item>
<item name="tabBackground">?attr/selectableItemBackground</item>
<item name="tabTextAppearance">@style/TextAppearance.Design.Tab</item>
<item name="tabSelectedTextColor">?android:textColorPrimary</item>
</style>
Ayant cette spécification de style, nous pouvons maintenant personnaliser le TabLayout comme ceci:
<android.support.design.widget.TabLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@id/pages_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:tabIndicatorColor="@android:color/white"
app:tabIndicatorHeight="4dp"/>
Et le problème est résolu, la couleur et la hauteur de l'indicateur d'onglet peuvent être modifiées par rapport à leurs valeurs par défaut.
parent="@style/Base.Widget.Design.TabLayout"
Avec la bibliothèque de support de conception, vous pouvez maintenant les modifier dans le xml:
Pour changer la couleur de l'indicateur TabLayout:
Pour modifier la hauteur de l'indicateur TabLayout:
la source
Comme je ne peux pas publier de suivi du commentaire du développeur Android , voici une réponse mise à jour pour toute autre personne qui doit définir par programme la couleur de l'indicateur d'onglet sélectionné:
De même, pour la hauteur:
Ces méthodes n'ont été ajoutées que récemment à la révision 23.0.0 de la bibliothèque de support , c'est pourquoi la réponse de Soheil Setayeshi utilise la réflexion.
la source
la source
Avec la bibliothèque de support de conception v23, vous pouvez définir par programme la couleur et la hauteur.
Utilisez simplement pour la hauteur:
Voici le javadoc officiel .
Utilisez simplement pour la couleur:
Voici le javadoc officiel .
Ici vous pouvez trouver les informations dans le Google Tracker .
la source
Pour changer la couleur et la hauteur de l'indicateur par programmation, vous pouvez utiliser la réflexion. par exemple pour la couleur de l'indicateur, utilisez le code ci-dessous:
et pour changer la hauteur de l'indicateur, utilisez "setSelectedIndicatorHeight" au lieu de "setSelectedIndicatorColor" puis appelez-le à la hauteur désirée
la source
L'indicateur de photo utilise ceci:
la source
à partir de xml:
de java:
la source
Vous pouvez changer cela en utilisant xml
la source
Mettez simplement cette ligne dans votre code. Si vous modifiez la couleur, modifiez la valeur de couleur entre parenthèses.
la source
Android facilite les choses.
Alors, on dit juste
Cela nous donnera une couleur bleue normale et une couleur violette sélectionnée.
Maintenant, nous définissons la hauteur
Et pour la hauteur nous disons
la source