我试图将 BulletSpan 插入 SpannableStringBuilder,但 BulletSpan 从未出现。
private void insertBulletSpan(SpannableStringBuilder spannable) {
Matcher matcher = bulletPattern.matcher(spannable);
while (matcher.find()) {
boolean set = true;
for (BulletSpan span : spannable.getSpans(matcher.start(),
matcher.end(), BulletSpan.class))
if (spannable.getSpanStart(span) >= matcher.start()
&& spannable.getSpanEnd(span) <= matcher.end())
spannable.removeSpan(span);
else {
set = false;
break;
}
if (set) {
spannable.setSpan(new BulletSpan(),
matcher.start(), matcher.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中子弹模式:
bulletPattern = Pattern.compile(Pattern.quote("|b|"));
Run Code Online (Sandbox Code Playgroud)
所以实际上我想替换所有出现的“|b|” 与 BulletSpan。调用了设置跨度的方法,我验证了这一点,但文本仍然包含所有 |b|。我使用与 ImageSpans、URLSpans 和 UnderlineSpans 完全相同的代码片段来替换类似的情况。他们工作得很好。
遇到了同样的挑战,事实证明 BulletSpan 仅在it's starting point设置为 时才会显示beginning of a (new) line。就我而言,在“\r\n”对之后。
| 归档时间: |
|
| 查看次数: |
1632 次 |
| 最近记录: |