Android更改每个字符串颜色

时间:2013-07-22 11:46:20

标签: android colors settext

我想更改更改文本中每个单词的颜色。我怎么能这样做?

selected.setText( "ID".Color.RED + "data".Color.BLUE);

3 个答案:

答案 0 :(得分:1)

你可以使用这样的函数(使用spannable)来改变每个单词的颜色

public Spannable getColoredStringSpannable(String text, int color,
        int from, int to) {

    Spannable WordtoSpan = new SpannableString(text);
    WordtoSpan.setSpan(new ForegroundColorSpan(color), from, to,
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

    return WordtoSpan;
}

答案 1 :(得分:0)

您可以使用SpannableString

SpannableString ss1=  new SpannableString("ID"); 
ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, ss1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
selected.append(ss1);
SpannableString ss2=  new SpannableString("data"); 
ss2.setSpan(new ForegroundColorSpan(Color.BLUE), 0, ss2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
selected.append(ss2);

您可以按空格分割单词并将跨度设置为单词。

示例:

TextView _tv = (TextView) findViewById( R.id.tv );
int[] color ={Color.BLUE,Color.RED,Color.GREEN};
String s =" My Dynamic Text"; 
String split[] = s.split("\\s");
int j=0;
for(int i=1;i<split.length;i++)
{
    System.out.println(split[i]);
    SpannableString ss2=  new SpannableString(split[i]);     
    ss2.setSpan(new ForegroundColorSpan(color[j]), 0, ss2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    _tv.append(ss2);
    _tv.append(" ");
    j++;
}

快照

enter image description here

答案 2 :(得分:0)

更简单的方法:

TextView.setText(Html.fromHtml("<some html color tag/>"));