2016-06-21 16 views
1

Ich arbeite an einer Art Tippspiel auf Android. Es hat eine Textansicht mit dem Satz, den der Benutzer eingeben muss. Jedes Mal, wenn das aktuelle Wort, das der Benutzer eingeben muss, unterstrichen wird, sobald der Benutzer ein Wort beendet hat, ändert sich das Wort basierend auf der Zeit, die es brauchte (zB> 5 Sekunden = rot, < 5 Sekunden ist grün).Unterstreichen und ändern Textfarbe in Android TextView

Meine Frage ist, wie kann ich die Farbe der Wörter in der Textansicht unterstreichen und ändern, so dass, wenn ich ein neues Wort unterstreiche, es auch die Farbe der vorherigen behält?

Zur Zeit bin ich jedes Mal etwas, was wie dies zu tun ich zum nächsten Wort bewegen

String texts = myTextView.getText().toString(); 
// put the next word to be underlined between <u> </u> tags 
myTextView.setText(Html.fromHtml(texts)); 

Wie Sie sehen können, wird es das nächste Wort unterstreichen, sondern alle Farben der vorhergehenden Wörter wird verloren, aber ich möchte diese behalten.

Danke für Ihre Hilfe!

Bearbeiten: Mein Text ist bereits behoben und der Benutzer muss die Wörter eingeben, die sie sehen. Zum Beispiel habe ich einen Satz "Sample Sentence Hello". Ich möchte, dass "Sample" zuerst unterstrichen wird, dann "Sentence" unterstrichen, "Sample" rot oder grün geändert, dann "Hello" unterstrichen und "Sample" und "Sentence" je nach der Zeit in rot oder grün geändert der Benutzer jedes Wort eingeben.

+0

Sie sollten mit Spannable Klasse gehen. http://stackoverflow.com/questions/3282940/set-color-of-textview-span-in-android –

+0

@ K.Gandhi Danke, wie ich es sehe, muss ich die Start-End-Indizes jedes Wortes speichern Verwenden Sie spannbar. Ist das richtig? – Nguyen

+0

ja, du kannst damit gehen. Es ist nur eine Grundidee ... du solltest graben und es einfacher machen. –

Antwort

0

auf diese Weise versuchen zu erstellen

Unterstrichen
<resources> 
    <string name="your_string"> 
     This is an <u>underline</u>. 
    </string> 
</resources> 

Java

TextView tv = (TextView) view.findViewById(R.id.tv); 
SpannableString content = new SpannableString("Content"); 
content.setSpan(new UnderlineSpan(), 0, content.length(), 0); 
tv.setText(content); 

OR mit Farbe

txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
+0

Danke. Ich bekomme etwas, aber es ist immer noch nicht das, was ich vorhabe. Ich möchte nur ein Wort von den Texten unterstreichen/ändern und die geänderte Farbe der vorhergehenden Wörter beibehalten, wenn ich zu den nächsten übergehe. – Nguyen

+0

Ich schlage vor, dass ein separates Wort als String oder Array machen dann Farbe mit spannbar –

+0

anwenden Ja, ich denke, ich werde den Satz in ein Array teilen ist der beste Weg, den ich jetzt tun kann. Vielen Dank! – Nguyen

0

Sie können es programmatisch auf TextView setzen.

wie in if else Zustand.

if(time > 5){  
    String texts = myTextView.getText().toString(); 
    myTextView.setText(texts); 
    myTextView.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
    mTextView.settextColor(Color.parsecolor("#FF0000")); 

}else { 
    String texts = myTextView.getText().toString(); 
    myTextView.setText(texts); 
    myTextView.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
    mTextView.settextColor(Color.parsecolor("#0000FF")); 
} 
+0

Danke Kumpel aber wie kann ich die Farbe 1 Wort auf einmal unterstreichen und ändern? Zum Beispiel enthält meine Textansicht den Satz "Sample Sentence", ich möchte, dass das Wort "Sample" zuerst unterstrichen und dann "Sentence" unterstrichen wird und "Sample" die Farbe in Rot oder Grün ändert. – Nguyen

+0

@Nguyen Sie 'Text' ist' statisch' oder es kann von 'User' geschrieben werden. – Ironman

+0

mein Text ist statisch – Nguyen

Verwandte Themen