web-dev-qa-db-fra.com

Android - Textview change de couleur lors du changement d'état

Comment appliquer de la couleur sur les différents états (focalisé, appuyé, activé) de TextView?

J'ai déjà mentionné ceci: http://developer.Android.com/reference/Android/content/res/ColorStateList.html , mais je ne sais pas comment appliquer la liste d'état de couleur au TextView ou y a-t-il un autre moyen de le faire?

Mettre à jour:

Je veux changer la couleur de fond.

16
Paresh Mayani

Créez une nouvelle xml (dans le dossier drawable). avec la couleur, vous pouvez spécifier une image pour chaque état de l'événement
et vous pouvez définir ce xml comme arrière-plan 

si votre code xml est 'res/drawable/abc.xml', définissez arrière-plan comme

Android:background="@drawable/abc"

Edité pour ajouter de la couleur en état xml
notre xml, res/drawable/abc.xml 

<?xml version="1.0" encoding="utf-8"?>
   <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_selected="true"   
    Android:drawable="@color/gray" />
</selector>

Puis déclarer le gris dans your res\values\strings.xml

<color name="gray">#808080</color>
15
Labeeb Panampullan

créer xml sous res/color dir. 

exemple de nom de fichier: selector_white_gray.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true"
          Android:color="@color/Gray"/> <!-- pressed -->
    <item Android:color="@color/White"/> <!-- default -->
</selector>

vous pouvez ajouter plus d'états. vous pouvez utiliser un code de couleur comme "#ffffff" au lieu de "@ color/White" prédéfini. Attention, utilisez Android: couleur pas Android: dessinable. Cet exemple change la couleur du texte lorsque vous appuyez dessus. définissez l'attribut textColor sur le sélecteur ci-dessus.

<TextView
       Android:layout_width="wrap_content"
       Android:layout_weight="1"
       Android:layout_height="wrap_content"
       Android:textColor="@color/selector_white_gray"
       Android:textSize="18sp" 
       Android:textStyle="bold" >
</TextView>
34
Engin OZTURK

C'est facile. Il suffit d’intercepter l’événement souhaité et d’écrire comme ceci:

TextView textView=(TextView)findViewById(R.id.myText);
String s=getString(R.string.myText);
SpannableString ss=new SpannableString(s);
ss.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss);
0
barmaley

Si vous souhaitez modifier la couleur du texte - vous le créez en tant que fichier xml dans le dossier res/color (par exemple, res/color/mycolor.xml , Puis dans votre TextView, vous l'assignez à la couleur Android:textColor="@color/mycolor"

Pour changer de fond, voir autre réponse.

0
Alex Volovoy
textView = (TextView)findViewById(R.id.myTextView);
mMainView.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        textView.setTextColor(Color.GREEN);//set the color here
    }

});
0
abinaya