如何在Android中文本内设置链接?

3

所以,我正在使用Jsoup进行网络爬虫。我可以从网站上抓取数据,但问题是我得到的链接和文本是分开的。我想将这些链接设置在我的文本中。我正在使用SpannableStringBuilder,所以有很多链接和很多文本,所以我不知道该如何解决这个问题,因为我是Android开发新手。

    private void getWebsite() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            final SpannableStringBuilder 
                    builder = new SpannableStringBuilder();
            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) {
                    final String url = link.attr("href");
                    builder.append("\n")
                            .append("Link: ")
                            .append(url, new URLSpan(url), 
                                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
                            .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());
                    textView.setMovementMethod
                            (LinkMovementMethod.getInstance());
                }
            });
        }
    }).start();}

我得到的输出格式如下:

链接://en.wikipedia.org/

文本:英语5,678,000+篇文章

链接://ja.wikipedia.org/

文本:日语1,112,000+篇文章

链接://es.wikipedia.org/

文本:西班牙语1,430,000+篇文章 ...... ......

我想要的输出格式如下:

**文本:English 5 678 000+ articles**,在该行中,我想要将此链接 **链接://en.wikipedia.org/** 作为超链接或以某种方式连接起来,以便我可以单击此文本并直接转到网页,就像在MS Word中一样。


FYI,它是__scrape__而不是 scrap。'To scrap' 的意思是像垃圾一样扔掉 :-( - DisappointedByUnaccountableMod
1个回答

1
您想使用HTML设置文本值。这里是文档,以下是一些示例代码:
    String str = "Do you want to search on " + "<a href=http//www.google.com>" +
                  "Google" + "</a>" + " or " + "<a href=http//www.yahoo.com>" +
                  "Yahoo" + "</a>" + "?";

    if(Build.VERSION.SDK_INT >= 24) {
        viewToSet.setText(Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY));
    } else {
        viewToSet.setText(Html.fromHtml(str));
    }

在其中,您可以使用HTML设置值。只要使用HTML属性,您还可以更新颜色、加粗、斜体等。


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