2016-06-21 37 views
1

我正在研究Android上的一種打字遊戲。它具有文本視圖和用戶必須輸入的句子。每當用戶輸入的當前單詞都會加下劃線,一旦用戶完成單詞,該單詞將根據輸入時間改變顏色(例如> 5秒=紅色,< 5秒鐘爲綠色)。在Android Text中強調並更改文本顏色

我的問題是,如何在文本視圖中強調和更改單詞的顏色,以便在強調新單詞時保留前一個單詞的顏色?

目前我正在做一些這樣的事我每次移動到下一個單詞

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

正如你看到的時候,它會強調一個字,但以前的所有的話顏色會失去了,但我想保留這些。

感謝您的幫助!

編輯:我的文本已經修復,用戶必須鍵入他們看到的文字。例如,我有一個句子「Sample Sentence Hello」。首先我要先標註「Sample」,然後在「Sentence」下劃線,「Sample」改爲紅色或綠色,然後「Hello」加下劃線,並且「Sample」和「Sentence」根據所花時間分別變爲紅色或綠色用戶輸入每個單詞。

+0

你應該Spannable類去創建下劃線

<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。 http://stackoverflow.com/questions/3282940/set-color-of-textview-span-in-android –

+0

@ K.Gandhi謝謝,正如我所看到的,我必須將每個單詞的開始末尾索引存儲到使用Spannable。是對的嗎? – Nguyen

+0

是的,你可以隨心所欲。這只是一個基本的想法......你應該更容易地挖掘並使其工作。 –

回答

0

嘗試這種方式使用的油漆

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

謝謝。我得到的東西,但它仍然不是我想到的。我希望一次只對文本中的一個單詞加下劃線/更改顏色,並在轉移到下一個單詞時保留前一個單詞的顏色。 – Nguyen

+0

我建議把單獨的單詞當作字符串或製作數組,然後使用spannable應用顏色 –

+0

是的,我想我會將句子拆分成數組是我現在可以做的最好的方法。謝謝! – Nguyen

0

您可以通過編程方式將其設置爲TextView

像在if else條件。

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

感謝隊友,但我怎樣才能強調和改變顏色1字一次?例如,我的文本視圖保留了「Sample Sentence」這個句子,我希望它首先有下劃線的單詞「Sample」,然後「Sentence」下劃線,「Sample」將顏色更改爲紅色或綠色。 – Nguyen

+0

@Nguyen你的'text'是'static'或者它可以被'User'寫入。 – Ironman

+0

我的文本是靜態的 – Nguyen