android - 文本视图自动链接

Posted

技术标签:

【中文标题】android - 文本视图自动链接【英文标题】:android - TextView autoLink 【发布时间】:2021-01-19 13:21:54 【问题描述】:

我想在 TextView 中显示链接,并且每当用户单击链接时,它都必须打开。 xml代码:

<TextView
            android:id="@+id/textView"
            android:layout_
            android:layout_
            android:linksClickable="true"
            android:autoLink="web" />

Java 代码:

textView.setMovementMethod(LinkMovementMethod.getInstance());

是的,它正在工作并使链接变为蓝色并加下划线。但是当我使用一个词例如 ".hello" 它成为一个链接,因为点。所以如果一个点和一个词相邻,它就变成了一个链接。我怎么解决这个问题? 谢谢。

【问题讨论】:

【参考方案1】:

首先从 xml 中删除 linksClickable 和 autoLink 属性

然后您必须检查给定字符串中是否有任何可用的 url 使用正则表达式。 使用以下代码:

private boolean containsURL(String content) 
    String REGEX = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
    Pattern p = Pattern.compile(REGEX, Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(content);
    if (m.find()) 
        return true;
    
    return false;

如果在给定的字符串中包含 url,那么它将以蓝色显示文本。

TextView textView = findViewById(R.id.textView);
textView.setText("Any String value");

if (containsURL("Any String value")) 
    Linkify.addLinks(textView, Linkify.WEB_URLS);
    textView.setLinksClickable(true);

【讨论】:

以上是关于android - 文本视图自动链接的主要内容,如果未能解决你的问题,请参考以下文章

我想要文本视图作为可点击的链接

Android - ListView 没有收到带有可点击链接的文本视图的 OnItemClick

如何在 Android 的文本视图中添加网页链接 url?

如何在可点击的文本视图中设置超链接? Android Java [重复]

在 android TextView 中链接

Android:在自定义 Web 视图中检测并打开外部链接