web-dev-qa-db-de.com

Android - Textansicht Farbe beim Statuswechsel ändern

Wie kann ich die verschiedenen Status (fokussiert, gedrückt, aktiviert) von TextView mit Farbe versehen?

Ich habe dies bereits erwähnt: http://developer.Android.com/reference/Android/content/res/ColorStateList.html , weiß aber nicht, wie ich eine Farbzustandsliste auf die TextView anwenden kann? oder gibt es einen anderen Weg, dies zu tun?

Aktualisieren:

Ich möchte die Hintergrundfarbe ändern.

16
Paresh Mayani

Erstellen Sie eine neue xml (im Ordner drawable). Mit der Farbe können Sie ein Bild für jeden Ereignisstatus angeben.
und Sie können diese XML-Datei als Hintergrund festlegen 

wenn Ihre XML-Datei 'res/drawable/abc.xml' ist, legen Sie den Hintergrund als fest

Android:background="@drawable/abc"

Bearbeitet, um Farbe im Status XML hinzuzufügen
unser 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>

Dann deklarieren Sie grau in your res\values\strings.xml

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

xml unter res/color dir erstellen. 

beispieldateiname: 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>

sie können weitere Zustände hinzufügen. Sie können einen Farbcode wie "#ffffff" anstelle des vordefinierten "@ color/White" verwenden. Wenn Sie Android verwenden, können Sie Folgendes verwenden: color, nicht Android: drawable. Dieses Beispiel ändert die Textfarbe, wenn Sie darauf drücken. Setzen Sie das TextColor-Attribut oben auf Selector.

<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

Es ist einfach. Fangen Sie einfach das gewünschte Ereignis ab und schreiben Sie wie folgt:

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

Wenn Sie die Farbe des Texts ändern möchten, erstellen Sie ihn als xml im res/color-Ordner (zum Beispiel res/color/mycolor.xml Und geben Sie ihm dann in Ihrem TextView die Farbe als Android:textColor="@color/mycolor"

Zum Ändern des Hintergrunds siehe andere Antwort.

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