由于项目需求,需要实现一个类似于微博的可以添加话题的编辑框,实现发布帖子时可以添加话题,并且话题要变色 可选中 可删除等.起初为了快速实现,就在网上找了以下,有人已经实现了此功能,这里给出参考帖子的链接Android 自定义view-仿新浪微博#话题#插入EditText
不过测试的时候发现有些许bug,并且在华为手机上删除话题不能被选中,于是就基于参考帖子的实现思路,对其中一些东西进行了修改,并适配了华为(原因是通过 KeyCode==KeyEvent.KEYCODE_DEL竟然监听不到华为个别机型的删除键)手机.
实现思路
1.通过onSelectionChanged()监听光标的位置,来判断光标是否被选中在话题文字内部,如果在话题内部,则将光标定位到话题结束处.
2.添加addTextChangedListener(),监听文字变化.如果是删除文字动作,则遍历TEditText内部的list,判断是否有话题,如果有并且删除的是话题,则对话题进行选中.最后,刷新TEditText的UI展示.
UI效果
如图1是添加话题的效果
图2是话题被选中的效果