不能完全正确



我正试图将一段长文本(来自几段不同的数据)组合为TextView的内容。

我希望每条线路都有以下结构:

{工件1}|{工件2}

我希望每个"{piece1}|"都是浅灰色。我希望每个"{piece2}"都是深灰色。

我已经定义了这两种颜色。

我希望整个标签是我添加到应用程序中的自定义字体。

以下是我目前正在尝试的:

// regularTf is a Typeface created from a font added to this app
mItemCodesLabel.setTypeface(regularTf);
SpannableStringBuilder builder  = new SpannableStringBuilder();
ForegroundColorSpan ltGraySpan  = new ForegroundColorSpan(R.color.light_gray);
ForegroundColorSpan dkGraySpan  = new ForegroundColorSpan(R.color.dark_gray);
int index                       = 0;
for (int i = 0; i < codes.size(); i = i + 1) {
ParseObject code            = codes.get(i);
String value                = code.getString("value") + " | ";
if (i > 0) {
builder.append("n");
index                   = index + 1;
}
builder.append(value);
builder.setSpan(ltGraySpan, index, index + value.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
index                       = index + value.length();
String loc                  = code.getString("location");
builder.append(loc);
builder.setSpan(dkGraySpan, index, index + loc.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
index                       = index + loc.length();
}
mItemCodesLabel.setText(builder, TextView.BufferType.SPANNABLE);

在我的布局文件中,此标签的文本颜色设置为R.color.dark_gray

我看到的结果有些令人困惑。我有两个项目的代码,TextView看起来像这样:

{代码1条1}|{代码2条2}{代码2件1}|{代码二件2}

"{code 1 piece 1}|"为深灰色。其余为浅灰色。

根据我读过的几个关于这个主题的教程,我没有发现我的代码有什么问题,但我承认整个"可扩展"主题仍然让我感到困惑。我来自iOS,Spannable看起来很像NSAttributedString,但我似乎错过了一些东西。

我们不能使用Span的同一实例来标记文本的多个部分。无论何时通过传递Span实例来调用setSpan(),都会清除该实例标记的上一个跨度。我认为,通过了解这个事实,你可以解决问题。

相关内容

  • 没有找到相关文章

最新更新