Как получить индекс персонажа в составном объекте?

У меня есть эта строка 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);
Другие вопросы по тегам