我有这个字符串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);
但这不是制作®上标,跨区对象和字符串的索引是不同的,我怎样才能在跨区字符串中获取索引®?
将Spanned
转换为String
,这会给你"干净",从 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);