最近需要实现一个类似微信群聊中@好友的功能,搜了一圈之后发现没有源码可以借鉴,于是只好自己动手实现了。先看一下实现之后的效果
可以看到,无论是@添加一个好友,还是删除一个“@+好友”,都是将这个“@+好友”当作一个整体来实现的。添加的时候当作整体,这个
很容易想到,就是用Span。但是在删除的时候,首先要能拦截到软键盘的按下事件,然后再去查看当前光标的位置,看是否在“@+好友”
这个Span的后面,再去把这个“@+好友”统一选中,一并删除。Emmm...软件盘事件拦截,好像没玩过啊。。。只好打开TextView源码,
搜一下关键字input,发现了onCreateInputConnection(EditorInfo outAttrs)这个API,如果没猜错的话,应该就是它了,
网上搜一把,这个是干啥的。
好了,就说这么多,关键点就是Span以及onCreateInputConnection。
最后,附上源码:源码