我正在尝试使用 SpannableString 的 setSpan() 对输入字符串的每个字符进行交替着色,但不知何故,输出的字符串没有正确着色。
//ColorLogic.java:
public SpannableString colorString(String myStr)
{
SpannableString spnStr=new SpannableString(myStr);
int strLen=myStr.length();
for(int i=0; i< strLen; i++)
{
if (i%2==0)
{
Log.v(DTAG, "vow"+myStr.charAt(i));
spnStr.setSpan(new ForegroundColorSpan(Color.RED), i, i, 0);
}
else
{
Log.v(DTAG, "cons"+myStr.charAt(i));
spnStr.setSpan(new ForegroundColorSpan(Color.BLUE), i, i, 0);
}
}
return spnStr;
}
//In my OnCreate of my activity class:
// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(50);
//Call Color Logic to color each letter individually
ColorLogic myColorTxt=new ColorLogic();
SpannableString spnMsg=myColorTxt.colorString(message);
textView.setText(spnMsg, BufferType.SPANNABLE);
setContentView(textView);
}
output:
![2 letters][1]
[1]: http://i.stack.imgur.com/rA8TV.png
![3 letters][1]
[1]: http://i.stack.imgur.com/X039z.png
我注意到,如果我只是有:
spnStr.setSpan(new ForegroundColorSpan(Color.RED), 0, 0, 0);
然后字符串的所有字符都涂成红色,即使我已将开始和停止指定为第一个字符。我尝试了不同的 Spannable 标志,例如: android.text.Spannable.SPAN_INCLUSIVE_INCLUSIVE
,但仍然出现同样的问题。