我一直在尝试使用模式或其他工具来解决这个问题,但还没有让它工作。
说我有一个HTML链接:
<a href="http://www.google.com">Google, Inc.</a>
我想要链接到文本视图但是将链接的文本设置为实际的URL而不是Google,Inc。
例如,如果收到的数据是:
- 如果您想尝试搜索,请转到<a href="http://www.google.com">Google, Inc.</a>
,这很容易。
我希望它显示为:
- 如果您想尝试搜索,请转到http://www.google.com,这很容易。
而不是:
- 如果您想尝试搜索,请访问Google,Inc。并且这很容易。
Html.fromHtml()将其显示为“Google,Inc。”自动,但不是我想要的结果。
此外,我不需要这个专门用于此示例,我需要它适用于所有html链接,因为我不知道我将获得哪些链接作为数据。
答案 0 :(得分:1)
它实际上相当棘手......但我找到了一种方法。
感谢SO。
这是答案:
TextView tvYourTextView = ( TextView ) findById( R.id.yourTextViewThatShowsALink );
tvYourTextView.setMovementMethod(LinkMovementMethod.getInstance()); //that will make your links work.
PS:
不要忘记使用Html.fromHtml("your content as html")
答案 1 :(得分:0)
我建议使用Linkify并自行解析字符串以创建所需的链接。
设置Linkify以查找原始网址并将其转换为文字中的链接:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
/>
此函数会将原始地址拉出html标记:
public String parseLinks(String raw) {
String openTag = "<a href=\"";
String closeTag = "</a>";
String result = "";
int start = 0;
int middle = raw.indexOf(openTag);
int end;
while(middle > -1) {
result += raw.substring(start, middle);
end = raw.indexOf("\">", middle);
result += raw.substring(middle + openTag.length(), end);
start = raw.indexOf(closeTag, end) + closeTag.length();
middle = raw.indexOf(openTag, start);
}
result += raw.substring(start, raw.length());
return result;
}
了解此功能没有错误检查,我建议您自己添加。
现在只需将从parseLinks()返回的String传递给TextView,如下所示:
textView.setText(parseLinks(rawHTML));
希望有所帮助!