Android TextView启用Linkify和Href标签

7
我想将一个包含href标签和普通http链接的文本设置到TextView中。例如,像这样的文本:"请点击这里,或访问http://yahoo.com。" 问题是我无法同时设置两个属性。如果我将Html.fromHtml设置为文本,则带有href标签的链接会被突出显示。但Linkfy属性对"http://yahoo.com"不起作用,反之亦然。是否有默认属性可以在TextView中启用href标签和普通链接。
谢谢,

你找到解决方案了吗? - ductran
3个回答

0

0
我已经找到了在我的情况下完美运行的解决方案,你可以在这个答案中看到https://dev59.com/ZWct5IYBdhLWcg3wAo6H#12418663
protected void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span)
{
    int start = strBuilder.getSpanStart(span);
    int end = strBuilder.getSpanEnd(span);
    int flags = strBuilder.getSpanFlags(span);
    ClickableSpan clickable = new ClickableSpan() {
        public void onClick(View view) {
            // Do something with span.getURL() to handle the link click...
        }
    };
    strBuilder.setSpan(clickable, start, end, flags);
    strBuilder.removeSpan(span);
}

protected void setTextViewHTML(TextView text, String html)
{
    CharSequence sequence = Html.fromHtml(html);
    SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
    URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);   
    for(URLSpan span : urls) {
        makeLinkClickable(strBuilder, span);
    }
    text.setText(strBuilder);
    text.setMovementMethod(LinkMovementMethod.getInstance());       
}

和只是 TextView 用于 Linkify

Linkify.addLinks(description, Linkify.WEB_URLS);

-3
如果可能的话,您可以使用mx控件标签(Spark不再支持此功能),并像以下示例一样使用htmlText:
import mx.controls.Label //class need to be imported

var textview:Label = new Label();
textview.htmlText = "please <a href=/'http://google.com' target='_blank'>click here</a>. or visit http://yahoo.com";
yourItemContainer.addElement(textview);

这应该能够工作。但我不知道你是否可以使用普通标签。


谢谢你的回复,伙计。但是我在Android中找不到上述的Label类。我想知道它是否与脚本语言有关? - Senthil
我刚刚意识到我已经不在 flex 标签中了 :p。我正在使用 flex 并制作适用于 Android 和 iOS 的移动应用程序。在 flex 中,我可以在我的视图中使用标签。 - Tim Decuypere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接