android - TextView 自动链接

android - TextView autoLink

我想在 TextView 中显示 links,每当用户点击 link 时,它都必须打开。 xml代码:

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

Java代码:

textView.setMovementMethod(LinkMovementMethod.getInstance());

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

首先从 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);
}