У меня есть блок текста, исходящий из веб-сервиса, и в зависимости от некоторых тегов, которые я предопределл, я хочу стилизовать текст, прежде чем устанавливать его в свой TextView. Для полужирного, курсива и подчеркивания я смог сделать это легко с помощью команды replaceAll:
PageText = PageText.replaceAll("\\*([a-zA-Z0-9]+)\\*", "<b>$1</b>");
PageText = PageText.replaceAll("=([a-zA-Z0-9]+)=", "<i>$1</i>");
PageText = PageText.replaceAll("_([a-zA-Z0-9]+)_", "<u>$1</u>");
txtPage.setText(Html.fromHtml(PageText), TextView.BufferType.SPANNABLE);
Итак, чтобы выделить жирным шрифтом слово, окружайте его *, для курсива, окружайте с помощью _.
Но, для strikethrough, Html.fromHtml не поддерживает тег "strike", поэтому это невозможно сделать таким же образом. Я видел примеры использования Spannable для установки стиля в один раздел текста, но для него требуются позиционные числа. Поэтому, я думаю, я мог бы прокручивать текст, ища - (тег, представляющий забастовку), затем поиск следующего, охватывающего текст между ними, и повторение для всех таких строк. В итоге это будет 10 строк кода цикла, а не 1 для других, поэтому мне интересно, есть ли более элегантное решение там.