À l'aide du sélecteur de changement de TextView la couleur du texte
Je suis en train d'utiliser un TextView pour définir le style d'un TabWidget sur un tabhost.
Je viens de créer un sélecteur de couleur et fonctionne très bien, mais je veux faire un sélecteur pour textColor mais la couleur du texte ne change pas:
C'est mon tab_text_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true" android:color="@android:color/white" />
<item android:state_focused="true" android:color="@android:color/white" />
<item android:state_pressed="true" android:color="@android:color/white" />
</selector>
Et c'est le code quand j'essaie de l'utiliser sur un textView:
TextView txtTab=new TextView(this);
txtTab.setTextColor(R.drawable.tab_text_selector);
txtTab.setBackgroundResource(R.drawable.tab_bg_selector);
txtTab.setGravity(Gravity.CENTER);
txtTab.setText("Agregar Idea");
Je sais que la couleur du texte doit être blanc, en tout cas, mais il ne le fait pas.
InformationsquelleAutor rafuru | 2012-04-02
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser getColorStateList(). Et pour xml, voir ici.
J'ai aussi été aux prises avec ce problème. Si vous souhaitez utiliser un
state list
, vous devez le déclarer dans lecolor
dossier de ressources, au lieu de ladrawable
dossier, et l'utilisation de lasetTextColor(getResources().getColorStateList(R.color.tab_text_selector))
méthode.TextView
basé sur le sélecteur de l'état. Littéralement tous direandroid:color
dans le drawable sélecteur. Je me demande si l'un d'eux en fait essayé avant de répondre en pensant que c'était à droite.1) l'Utilisation tab_text_selector.xml comme ci-dessous et de le mettre dans res/couleur dossier:
Et mis à votre textview comme ci-dessous..
2) La Deuxième option Si vous utilisez textview en xml plutôt que d'utiliser par programmation à l'utiliser ensuite tab_text_selector.xml comme ci-dessous :
android:textColor="@drawable/tab_text_selector"
pour changer la couleur du texte? En faisant un peu de code vous vous rendriez compte queandroid:textColor="@color/tab_text_selector"
est effectivement la bonne réponse. Je n'ai aucune idée de comment quiconque aurait upvote votre commentaire lors de ses trompeuses.tab_text_selector.xml
fichier. Dans mon expérience, celles-ci vont dans leres/drawable
dossier, mais cette réponse dit de le mettre dansres/color
qui apparemment fonctionne, mais c'est un peu inhabituel.Utiliser de cette façon:
tab_text_selector.xml:
TextView:
Mais c'est mieux de mettre de la couleur dans
/res/color/yourcolor.xml
textColor
par programmation? Pourquoi ne pas simplement ajouterandroid:textColor="@drawable/tab_text_selector"
à la mise en page?Juste faire Sélecteur pour textcolor
Puis définissez textColor propriété de Textview un ensemble cliquable=true
@ffleandro,@ρяσѕρєя K répond le mieux variante, je pense que l'utilisation ColorStateList meilleur choix pour les plus âgés et les dernières versions d'Android.
Voici de référence sur les développeurs android
http://developer.android.com/guide/topics/resources/color-list-resource.html
Créer un sélecteur (text_color_selector.xml) et le mettre dans res/couleur dossier:
ajouter ceci dans votre Textview comme:
par programmation, vous pouvez définir Textview comme ceci:
Espère que cela aide.
Merci d'utiliser et de tester avec une couleur différente.
Doit utiliser aussi un cas de défaut avec certaines couleurs de dire noir avec les tous les cas.. quand aucun état n'est utilisé par défaut sera appliquée.
Plus simple et la solution efficace:
Ex.: txtview.setTextColor( ContextCompat.getColorStateList(contexte, R. de la couleur.tab_tv_selector) );