java - 如何在 Android 中向文本添加 href 链接?

标签 java android jsoup

我正在使用 jsoup 抓取一些网络数据,我可以以不同的方式获取链接和文本。我想使用我获取的链接为这些文本创建超链接。我是 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();
}

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

最佳答案

要在 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());

关于java - 如何在 Android 中向文本添加 href 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56883311/

相关文章:

java - 如何检查URL是否不存在?

java - Math.ceil() 方法不适用于 double 值

java - 检查 Android View 中设置了哪个可绘制对象

java - Android:相对布局

android - ListView 保存复选框的状态

java - Jsoup 获取两个标签之间的 html

java - 如何用 Jsoup 捕捉这段文字?

java - 修复 "ExtLibUtil cannot be resolved"问题

java - 防止 Jsoup.parse 移除结束的 </img> 标签

java - kafka生产者中的默认分区到底是在哪里决定的?