背景
假设我使用 SpannableStringBuilder 将多个内容附加到其中,其中之一是我从 strings.xml 文件格式化的字符串,该文件内部有一个跨度:
SpannableStringBuilder stringBuilder = new SpannableStringBuilder ();
stringBuilder.append(...)...
final SpannableString span = new SpannableString(...);
span.setSpan(new BackgroundColorSpan(0xff990000), ...,...,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
stringBuilder.append(getString(R.string.string_to_format, span));
stringBuilder.append(...)...
textView.setText(stringBuilder);
问题
可悲的是,格式化这样的字符串会删除跨度本身,所以在我的例子中,不会有任何带有背景颜色的文本。
这发生在“getString”的行上。
我试过的
如果我只是单独附加跨度(没有“getString”),它工作正常。
我也尝试调查 Html.fromHtml,但它似乎不支持文本的背景颜色。
问题
是否可以格式化具有跨度但仍具有跨度的字符串?
更具体地说,输入是来自 strings.xml 文件的字符串 A,它只有一个占位符(没有特殊的 HTML 标记),另一个字符串 B 应该在运行时替换占位符。字符串 B 本身的部分文本应该有一个突出显示。
就我而言,突出显示的文本是要在字符串 B 中搜索的内容。