2016-04-11 5 views
1

Mein Szenario ist, wenn Benutzer auf einen TextView Text klicken, ändert es seine Farbe schwarz zu rot. Ich habe versucht, dieses Problem zu lösen, aber nichts ist passiert. Hier ist meine Mühe: My TextViewWie kann TextView Textfarbe bei der Auswahl geändert werden?

<TextView 
     android:id="@+id/text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:textSize="24sp" 
     android:textColor="@color/text_selector" 
     android:text="Shamima Sultana Shaumi"/> 

und die text_selector Klasse:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:color="@android:color/red"/> 
    <item android:state_pressed="true" android:state_enabled="false" android:color="@android:color/red" /> 
    <item android:state_enabled="false" android:color="@android:color/red" /> 
    <item android:color="@android:color/black"/> 
</selector> 

Immer, wenn ich auf TextView klicken, nichts passiert ist. Ich kann nicht herausfinden, was mein Problem war.

+0

Sie möchten, dass sich die Farbe für die Dauer des Klicks ändert (so lange sie gedrückt wird), oder soll sich die Farbe des Textes nach dem Klick ändern? –

+0

Legen Sie den Hintergrund zu diesem Zeichen fest, nicht Ihre textColor. – zgc7009

+0

@BartekLipinski Ich möchte die Textfarbe nach dem Klick ändern. – androidcodehunter

Antwort

2

Der Selektor kann z.B. dies:

<?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/red" /> 
    <item android:color="@android:color/black"/> 
</selector> 

und verwenden diese OnClickListener für Ihre textView:

textView.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     boolean isSelectedAfterClick = !v.isSelected(); 
     v.setSelected(isSelectedAfterClick); 

     if (isSelectedAfterClick){ 
      //do something 
     } else { 
      //do something 
     } 
    } 
}); 

Statt state_selected, isSelected und setSelected Sie verwenden können (jeweils) state_activated, isActivated und setActivated.

+0

Danke für Ihre Mühe. Es funktioniert jetzt :) – androidcodehunter

0

Haben Sie android TextView : Change Text Color on click versucht

Oder versuchen, eine OnTouchListener verwenden oder wenn Sie wollen OnClick ausführen kann OnClickListener für die Textansicht in Java-Code und drehen Sie die Farbe sein.

+0

Nein, aber ich möchte die Farbe durch XML-Selektor nach Textklick ändern. – androidcodehunter