Java 将Html.fromHTML与<;a>;泰元';t颜色!

Java 将Html.fromHTML与<;a>;泰元';t颜色!,java,android,html,Java,Android,Html,我正在尝试使用Android Html.fromHtml方法来解析一个文本,比如一条tweet,其中包含@references。但是,我有当前用户的用户名,我希望向用户强调这是他们自己 我正在尝试使用此代码,但它不起作用: in=in.replace(“@”+u.username“@”) 在理论上,我认为它应该工作,但它根本没有颜色 结果证明这是一件糟糕的事 font标记和a标记上的内联样式对我都不起作用我不得不直接使用Spannables: TextView text = (TextView)

我正在尝试使用Android Html.fromHtml方法来解析一个文本,比如一条tweet,其中包含@references。但是,我有当前用户的用户名,我希望向用户强调这是他们自己

我正在尝试使用此代码,但它不起作用:

in=in.replace(“@”+u.username“@”)


在理论上,我认为它应该工作,但它根本没有颜色

结果证明这是一件糟糕的事

font
标记和
a
标记上的内联样式对我都不起作用我不得不直接使用Spannables

TextView text = (TextView) findViewById(R.id.text);
text.setText("");
String linkName = "@appamatto";
String linkUrl = "http://twitter.com/appamatto"
SpannableString str = SpannableString.valueOf(linkName);
str.setSpan(new URLSpan(linkUrl), 0, linkName.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
str.setSpan(new ForegroundColorSpan(0xffffffff), 0, linkName.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
str.setSpan(new BackgroundColorSpan(0xff0099ff), 0, linkName.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
text.append(str);
例如,这将按照您想要的方式设置链接的颜色。您可以在中查找其他可扩展项以实现其他效果

编辑对于替换,您可以执行以下操作:

String[] components = in.split("@" + u.username, -1);
text.append(components[0]);
for (int i = 1; i < components.length; i++) {
    text.append(str); // using the spannable from above
    text.append(components[i]);
}
String[]components=in.split(“@”+u.username,-1);
text.append(组件[0]);
对于(int i=1;i

split()
中的-1是处理字符串末尾的匹配所需的,根据。

AFAIK,
background
不是
font
标记的
Html.fromHtml()
支持的属性。但是,我同意可能需要引号(而不是撇号,如问题中代码中的
a
标记中所示)。我将在下一次使用计算机时尝试此方法。听起来很有希望!:DI似乎无法将其用作替换项,因为我需要将其替换为服务器实际文本中的“@name”。这比实际情况更难。因为这个问题,我确实学到了一些东西。谢谢