1

我有这个字符串String thestring="<p>Abcd® X (CSX) Open Cell</p>",我使用 Html.from 来跳过打印标签,如下所示:

Spanned spst = Html.fromHtml(thestring);

我也希望 ® 是上标,所以我使用了以下代码,

SpannableStringBuilder cs = new SpannableStringBuilder(spst);
        cs.setSpan(new SuperscriptSpan(),thestring.indexOf("®") ,thestring.indexOf("®")+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        cs.setSpan(new RelativeSizeSpan(0.75f), thestring.indexOf("®"),thestring.indexOf("®")+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        content.setText(cs, TextView.BufferType.SPANNABLE);

但这并没有使 ® 上标,跨区对象和字符串的索引不同,我怎样才能在跨区字符串中获得 ® 的索引?

4

1 回答 1

2

转换SpannedString,这会给你“干净”,从 HTML 字符串中剥离

String strippedFromHTMLString = spst.toString();

然后在setSpan使用它而不是原来的thestring

int indexOfR = strippedFromHTMLString.indexOf("®");
SpannableStringBuilder cs = new SpannableStringBuilder(spst);
cs.setSpan(new SuperscriptSpan(),  indexOfR, indexOfR+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
cs.setSpan(new RelativeSizeSpan(0.75f),  indexOfR, indexOfR+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
content.setText(cs, TextView.BufferType.SPANNABLE);
于 2017-07-12T14:29:43.963 回答