comment changer la couleur de l'indicateur de texte de l'onglet? Je peux changer l'icône en utilisant la balise selector référencé le exemple . mais ne peut pas à la couleur du texte. Comment?
Le style dans votre changement de thème personnalisé
<item name="Android:tabWidgetStyle">@Android:style/Widget.TabWidget</item>
et
<style name="Widget.TabWidget">
<item name="Android:textAppearance">@style/TextAppearance.Widget.TabWidget</item>
<item name="Android:ellipsize">Marquee</item>
<item name="Android:singleLine">true</item>
</style>
<style name="TextAppearance.Widget.TabWidget">
<item name="Android:textSize">14sp</item>
<item name="Android:textStyle">normal</item>
<item name="Android:textColor">@Android:color/tab_indicator_text</item>
</style>
Voici une nouvelle réponse que j'ai trouvée chez Fred Grott ( http://knol.google.com/k/fred-grott/advance-tabs/ ) après une petite recherche sur le Web .
Cela vous permet de définir une selector
pour la couleur du texte afin qu'une couleur différente puisse être utilisée lorsque l'onglet est sélectionné ou non. Ce qui peut être très utile si vous utilisez une couleur d’arrière-plan différente pour l’onglet si celui-ci est sélectionné. Bien sûr, vous pouvez également ajouter une couleur unie et non un sélecteur.
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(Android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
Où R.color.text_tab_indicator est un fichier sélecteur xml situé dans votre dossier res/drawable.
En d'autres termes, le texte de l'indicateur est vraiment une variable TextView
qui peut être récupérée via l'objet View
auquel on peut accéder à partir de l'objet TabWidget
.
Jetez un coup d'œil aux exemples de Fred pour plus d'informations et de contexte concernant les déclarations de variable ainsi que d'autres astuces.
La réponse de Danny C est correcte à 100%. Je voulais simplement ajouter quelque chose pour obtenir une réponse complète avec un fichier de ressources.
Text_tab_indicator sous le fichier res/color
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:textColor="@color/text_tab_selected"
Android:state_selected="true" />
<item Android:textColor="@color/text_tab_unselected"
Android:state_selected="false" />
</selector>
Et ce text_tab_unselected & text_tab_selected ressemblera à ceci dans le dossier colors/values
<resources>
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>
Après cela, ajoutez enfin la réponse de Dannyy dans un fichier de classe d'onglets
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(Android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
Le changement de couleur peut également être indiqué sans utiliser Java - ce qui est probablement meilleur.
J'ai apporté des modifications à text_tab_indicator (notifiez que textColor a été remplacé par 'color'):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_selected="true" Android:color="@color/text_tab_selected" />
<item Android:state_selected="false" Android:color="@color/text_tab_unselected" />
</selector>
Définissez le style de TabWidget pour qu'il pointe vers un style spécifique dans votre code XML:
<TabWidget
...
style="@style/TabText"
/>
Déclarez votre text_tab_indicator situé dans/res/color comme couleur désirée dans le style
<style name="TabText">
<item name="Android:textColor">@color/tab_text_color</item>
</style>
Cela a fonctionné comme un charme (pour moi).
À la vôtre, Randall
Essayez ColorStateLists . Bonne chance.