前提:
微信的@规则研究下大概为以下几种情况
1、输入一段汉字文字,在这段文字的首位、中间、末尾输入@符均可调出@功能。
2、输入一段英文文字,在这段文字的首位输入@符可调出@功能,中间、末尾输入@符均不可调出@功能。
3、在汉字后面输入@符可调出@功能,在英文后面输入@符不可调出@功能。
4、删除@的人时支持一键删除该@的人。
5、删除文字遇到@符时不可再次调出@功能。
6、...
一、监听输入框文字的变化判断是否调出@功能。
艾特1.png private String placeHolder = "\u001F";//空格占位符
private String atHolder = "@";//@字符占位符
先判断在光标的位置输入的是否是@字符,如果是@字符且不是删除的状态,不是英文则调出@功能。
二、监听键盘的删除键
@2.png如果是删除是遇到占位符“placeHolder ”,则直接删除‘placeHolder’到‘atHolder ’之间的内容,如果再删除中遇到‘atHolder ’占位符,则置isNotShowAt = true,让输入框文字的变化时的判断不调出@功能。
三、保存和删除@的人。
@3.png当@某个人时需要在输入框显示此人的昵称同时再点击发送按钮时需要把@的人的id告诉服务器,但是当@某个人之后又手动删除这个@或者在@的人的名字中间添加或删除一个字符,则这个@不能够成立,因此需要在输入框的文字变化时进行@的动态判断,此示例中的存储用hashMap,也正保证key,即@人的昵称的唯一性。
更多的细节请参考类似微信聊天的@功能,有不足的地方请多多指正。
网友评论