我有一个textview,我想将以@开头的单词的颜色更改为红色,并且如果还有#的单词,我想将其更改为黑色color.Text没有硬编码。我怎么做到这一点,请帮助我。我已经尝试了下面的代码。但问题是红色仅适用于第一个单词。带有两种不同颜色的动态文本的单个textview
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>");
}
}
谢谢。它的工作。但一些文本显示为@ somt..ng和一些其他文本显示为@Something ..> – user1767260
你可以在这里发布那个字符串,为你创建问题? –
它只是改变textcolor不是字符串,所以有什么问题?实际上没有得到你的观点,你写的第一条评论.. –