让EditText中的链接即可点击又可编辑

最近在做项目时,检查项模块需要支持可编辑,同时也要支持点击链接跳转。

也就是说,EditText没有焦点时,链接应该可点。然而,当获得焦点时,应该让用户可以编辑链接。

添加一个OnFocusChangeListener来获取焦点的改变非常容易,但是用户如何改变焦点呢?(因为点击链接会使得浏览器被打开)

长按是一种解决方法。第二种办法是点击EditText的空白区域,如图:

不幸的是由于LinkMovementMethod的问题,就算文本最后一部分是空白的,点击它也相当于点击了链接

我发现这个问题只发生在最后一个字符是链接的情况下,那么如果我在文本最后添加一些内容呢?

// Make links in the EditText clickable

editText.setMovementMethod(LinkMovementMethod.getInstance());

// Setup my Spannable with clickable URLs

Spannable spannable =newSpannableString("http://blog.danlew.net");

Linkify.addLinks(spannable, Linkify.WEB_URLS);

// The fix: Append a zero-width space to the Spannable

CharSequence text = TextUtils.concat(spannable,"\u200B");

// Use it!

editText.setText(text);

现在点击空白的部分不会导致链接跳转了,我也可以切换到编辑模式了。

非常巧妙!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容