我需要实现一个字符串来更改它的某些部分的颜色以突出显示它。我需要创建一个类似于热键指南的东西,它显示您可以通过按下突出显示的数字来执行的操作。我曾经使用 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 类似的东西