我有一个文本视图,我想将以 @ 开头的单词的颜色更改为红色,如果还有带有 # 的单词,我想将其更改为黑色。文本不是硬编码的。我该怎么做。请帮帮我。我试过下面的代码。但问题是红色只适用于第一个单词。
String MsgTitle = Details.get(position).getContent();
String refString;
String hashString;
if (MsgTitle.contains(" ")) {
refString = MsgTitle.substring(0,
MsgTitle.indexOf(' ')).trim();
if (String.valueOf(refString.charAt(0)).equals("@")) {
refString = refString.replaceFirst("(^@\\w+)",
"<font color='#8A0A0A'>$1</font>");
} else {
refString = refString.replaceAll("(#\\w+)",
"<font color='#000000'><b>$1</b></font>");
}
hashString = MsgTitle.substring(
MsgTitle.indexOf(' ') + 1).trim();
((TextView) vi.findViewById(R.id.textData))
.setText(Html.fromHtml(refString
+ " "
+ hashString
.replaceAll("(#\\w+)",
"<font color='#000000'><b>$1</b></font>")));
}
回答我的问题
tring[] str_array = str .split(" ");
boolean isExists = false;
for (int i = 0; i < str_array.length; i++) {
for (int j = 0; j < i; j++) {
if (str_array[j].equals(str_array[i])) {
isExists = true;
}
}
if (str_array[i].startsWith("@") && !isExists) {
str = str .replace(str_array[i],
"<font color='#8A0A0A'>" + str_array[i]
+ "</font>");
} else if (str_array[i].contains("#")) {
str = str .replaceAll(str_array[i],
"<font color='#000000'><b>" + str_array[i]
+ "</b></font>");
}
}