Как получить индекс персонажа в составном объекте?
У меня есть эта строка 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);
Но это не делает верхний индекс ®, индекс отличается для составного объекта и строки, как я могу получить индекс ® в составной строке?
1 ответ
Решение
Перерабатывать 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);