android - SpannableStringBuilder 不能用于超过 2 个短语

android - SpannableStringBuilder not working for mor than 2 phrase

我想在我的 textView 上设置多种颜色,网上有很多示例,但它对我不起作用:((( 这是我的代码:

public class MainActivity extends Activity {

ImageView profile_picture;
TextView ageTxt;
Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    ageTxt = (TextView) findViewById(R.id.age);
    ageTxt.setText(setAgeText("3" , "11" , "27"));
}

private SpannableStringBuilder setAgeText(String year , String month , String day)
{
    SpannableStringBuilder builder = new SpannableStringBuilder();
    ForegroundColorSpan numColor = new ForegroundColorSpan(Color.rgb(103, 6, 143));
    ForegroundColorSpan textColor = new ForegroundColorSpan(Color.rgb(2, 104, 121));

    builder.append(setColoredSpan(numColor , year));
    builder.append(setColoredSpan(textColor , " سال و "));
    builder.append(setColoredSpan(numColor ,month));
    builder.append(setColoredSpan(textColor ," ماه و "));
    builder.append(setColoredSpan(numColor ,day));
    builder.append(setColoredSpan(textColor ," روز"));
    return builder;
}

private SpannableString setColoredSpan(ForegroundColorSpan color , String string)
{
    SpannableString spanStr = new SpannableString (string);
    spanStr.setSpan(color , 0 , spanStr.length() , 0);
    return spanStr;
}

}

这是我的结果:

我哪里错了???

我不知道为什么,但是每次删除 ForegroundColorSpan 对象并使用 new ForegroundColorSpan 调用 setColoredSpan() textView 时,都会以正确的方式显示 Spans。

builder.append(setColoredSpan(new ForegroundColorSpan(Color.rgb(103, 6, 143)) , year));
    builder.append(setColoredSpan(new ForegroundColorSpan(Color.rgb(2, 104, 121)) , " سال و "));
    builder.append(setColoredSpan(new ForegroundColorSpan(Color.rgb(103, 6, 143)) ,month));
    builder.append(setColoredSpan(new ForegroundColorSpan(Color.rgb(2, 104, 121)) ," ماه و "));
    builder.append(setColoredSpan(new ForegroundColorSpan(Color.rgb(103, 6, 143)) ,day));
    builder.append(setColoredSpan(new ForegroundColorSpan(Color.rgb(2, 104, 121)) ," روز"));