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

2448次阅读  |  发布于5年以前

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

最近,我正忙于让EditText支持编辑链接。让用户添加的链接在非编辑状态下可以跳转。

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

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

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

image

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

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

// Make links in the EditText clickable
editText.setMovementMethod(LinkMovementMethod.getInstance());

// Setup my Spannable with clickable URLs
Spannable spannable = new SpannableString("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);  

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

Copyright© 2013-2019

京ICP备2023019179号-2