【问题标题】:android - SpannableStringBuilder not working for mor than 2 phraseandroid - SpannableStringBuilder 不能工作超过 2 个短语
【发布时间】:2017-08-19 22:35:01
【问题描述】:

我想在我的 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;
}

}

这是我的结果:

我的错在哪里???

【问题讨论】:

    标签: android spannablestring spannablestringbuilder


    【解决方案1】:

    我不知道为什么,但是当删除 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)) ," روز"));
    

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2023-03-18
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      相关资源
      最近更新 更多