2013-12-13 89 views
4

我需要更改在句子中隨機出現的字符串的顏色。如何更改android中的句子中間的文本顏色

例如:以下句子是我需要顯示的。

  1. #xyz你怎麼樣。

  2. 我正在學習#abc android。

    在此我必須要改變的話「#xyz」顏色「#abc」即,它與字符「」開始。

    我用了一些字符串函數split(),subString()。但我沒有得到我需要的東西。

所以,請指導我如何解決這個問題。

+0

您可以用'Spannablestring'。 http://developer.android.com/reference/android/text/SpannableString.html – Raghunandan

回答

4

使用SpannableString爲前:

SpannableString ss = new SpannableString("hai #xyz how are you."); 
ss.setSpan(new ForegroundColorSpan(Color.RED), 4, 9, 0); 

試試下面的方法修改每個單詞的顏色#:

String s="hai #xyz how are you."; 
ForegroundColorSpan span = new ForegroundColorSpan(Color.RED); 
SpannableString ss = new SpannableString(s); 
String[] ss = s.split(" "); 
int currIndex = 0; 
for (String word : ss) { 
    if (word.startsWith("#")) { 
     ss.setSpan(span, currIndex,currIndex+ word.length(), 0); 
    } 
    currIndex += (word.length() + 1); 
} 
+0

謝謝你,我找到了#索引值。但是如何找到結束位置,字符串是不同的。例如:「hai #xyz你好嗎」和「你好嗎?你好嗎?」。 – rams

+0

尋找第一空間# –

+0

你能告訴我如何得到它嗎? – rams

3

您可以使用此代碼:

t.setText(first + next, BufferType.SPANNABLE); 
Spannable s = (Spannable)t.getText(); 
int start = first.length(); 
int end = start + next.length(); 
s.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

,或者您可以使用HTML:

String first = "This word is "; 
String next = "<font color='#EE0000'>red</font>"; 
t.setText(Html.fromHtml(first + next)); 
3

您可以輕鬆地做到這一點使用HTML標籤

tv_message.setText(Html.fromHtml("<font color=\"#000000\">"+"Hi "+"</font>"+" "+"<font color=\"#EE0000\">"+"XYZ "+"</font>"+" "+"<font color=\"#000000\">"+"How are You ? " + "</font>")); 
相關問題