如何处理HTML和Linkify的textview

use*_*897 8 android textview linkify

我正在尝试使用textview来处理超链接和电话号码.说我的文字是:

"555-555-555, www.google.com, <a href="www.google.com">Google!</a>"
Run Code Online (Sandbox Code Playgroud)

如果我在这个字符串上运行Html.fromHtml(),那么TextView会显示Google!正确地作为可点击链接而不是其他两个链接.

如果我在TextView上运行Linkify.addLinks(TextView,Linkify.All),那么前两个被正确识别为电话号码和网址,但html不会在最后一个中处理.

如果我同时运行它们,那么其中一个或另一个都被尊重,但不能同时进行.(Html.fromHtml将删除那里的html标签,但如果之后调用linkify则不会是链接)

关于如何让这两个功能同时工作的任何想法?所以所有链接都正确处理?谢谢!

编辑:此外,文本动态更改,所以我不知道如何能够为此设置Linkify模式.

gma*_*zzo 6

这是因为,Html.fromHtml并且Linkify.addLinks在处理文本之前会删除以前的跨度。

使用以下代码使其正常工作:

public static Spannable linkifyHtml(String html, int linkifyMask) {
    Spanned text = Html.fromHtml(html);
    URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);

    SpannableString buffer = new SpannableString(text);
    Linkify.addLinks(buffer, linkifyMask);

    for (URLSpan span : currentSpans) {
        int end = text.getSpanEnd(span);
        int start = text.getSpanStart(span);
        buffer.setSpan(span, start, end, 0);
    }
    return buffer;
}
Run Code Online (Sandbox Code Playgroud)


小智 1

尝试在文本视图上设置移动方法而不是使用 Linkify:

textView.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)