如何在Android中为文本添加href链接?

时间:2019-07-04 08:02:54

标签: java android jsoup

我正在使用jsoup抓取一些Web数据,并且可以以不同的方式获取链接和文本。我想使用我获取的链接为这些文本创建超链接。我是Android开发的新手,所以我不知道如何实现它或确切寻找什么。

下面是我尝试过的示例代码:

private void getWebsite(){
    new Thread(new Runnable(){
    @Override
    public void run() {
        final StringBuilder builder = new StringBuilder();
        try{                  
            Document doc = 
            Jsoup.connect("https://www.wikipedia.org/").get();
            String title = doc.title();
            Elements links = doc.select("a[href]");

            builder.append(title).append("\n");

            for(Element link : links){
                builder.append("\n").append("Link: 
                ").append(link.attr("href"))
                        .append("\n").append("Text: 
                         ").append(link.text());
            }

        } catch (IOException e){
         builder.append("Error").append(e.getMessage()).append("\n");
        }
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setText(builder.toString());
            }
        });
    }
     }).start();
}

我希望文本可点击,它应该重定向到应用程序的链接。

1 个答案:

答案 0 :(得分:0)

要链接TextView中的文本链接URL,请使用SpannableStringBuilder而不是常规的StringBuilder,并为每个可点击的内容设置URLSpan

final SpannableStringBuilder builder = new SpannableStringBuilder();
...
for (Element link : links) {
    final String url = link.attr("href");
    builder.
            ....
            .append("Link: ")
            .append(url, new URLSpan(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
            .append("\n")
            ...
}

和结局

textView.setText(builder);
textView.setMovementMethod(LinkMovementMethod.getInstance());