该autoLink
属性有一个烦人的错误:如果您在电话号码上单击示例,然后返回并单击第二个 url 链接 - 它会再次打开电话号码。这个属性对多个链接的效果很差,我已经实现了自己的类,这里是 Github ClickableLinksTextView.java上的链接
TextView
在您的示例中,您可以在 xml-layout中用我的类替换您的类ClickableLinksTextView
并更改如下代码:
ClickableLinksTextView textView = (ClickableLinksTextView)view.findViewById(R.id.mytext);
textView.setText("My text: +4412345678 Go to website: www.google.com Blah blah");
Linkify.addLinks(textView, Linkify.ALL);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
textView.setMovementMethod(ArrowKeyMovementMethod.getInstance());
textView.setTextIsSelectable(true);
// the autoLink attribute must be removed, if you hasn't set it then ok, otherwise call textView.setAutoLink(0);
}
您问题中问题的最初原因是LinkMovementMethod
类和textIsSelectable
属性根本不兼容,甚至 Android OS 开发人员在Android OS 源代码中也承认这一点。
不要更改支持文本选择的文本的移动方法,因为它会阻止任意光标位移。
如果文本视图是可选的,则只有 2 个正确的移动方法值是null
和ArrowKeyMovementMethod
。这就是我ArrowKeyMovementMethod
在示例中明确设置的原因,因为Linkify.addLinks
设置了不正确的移动方法,我应该恢复它。
至于autoLink属性的bug,是因为android开发者没有正确复制链接检测。您可以查看@cheng yang 的答案中的代码示例,无论您拥有多少个,代码都只是获取第一个链接。