Мне нужно реализовать строку, которая меняет цвет некоторых ее частей, чтобы выделить ее. Мне нужно создать что-то вроде руководства по горячим клавишам, которое отображает действие, которое вы можете выполнить, нажав выделенный номер. Я использовал Html. из HTML, но я прочитал, что это не быстро из-за синтаксического анализа. Мне нужно запустить код на медленном устройстве. Это мой текущий код.
private SpannableStringBuilder spannedTxt(String txt, int count){
String tagStart = "<p>", tagEnd = "</p>";
String temp = txt;
int emojCount = count /2;
emojCount += 1;
SpannableStringBuilder ssb = new SpannableStringBuilder();
for (int i = 0; i < count; i++) {
SpannableString spannable = new SpannableString(temp);
Log.d(TAG, "convertToSpan: "+spannable.toString());
spannable.setSpan(new ForegroundColorSpan(Color.RED),
txt.indexOf(tagStart) + tagStart.length(), txt.indexOf(tagEnd),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.append(spannable);
temp = temp.replaceFirst(tagStart, "");
temp = temp.replaceFirst(tagEnd, "");
}
return ssb;
}
В настоящий момент он меняет стиль первой подстроки внутри <p>
и </p>
, которая является числом. По какой-то причине tagStart и tagEnd не удаляются из окончательного SpannableStringBuilder, даже когда я регистрируюсь, это показывает, что теги удалены.
Я использовал <p>
и </p>
, чтобы узнать, какая часть должна быть окрашена. Мне это нужно, потому что действие может также содержать числа, и мне не нужно перекрашивать эти числа в действии. Например, Действие 1 (Нажмите 1). Строка также содержит смайлики между каждым действием, и я использую их количество, чтобы узнать, сколько действий содержит строка.
Более простое объяснение:
Что мне нужно сделать, это ниже
Действие 1 (Нажмите <p>
1 </p>
) Действие 2 (Нажмите <p>
2 </p>
) до
Action 1 (Press <font color="red">1</font>) Action 2 (Press <font color="red">2</font>)
Нечто подобное с использованием SpannableStringBuilder