我们项目要做一个类似微博头条文章的图文混排编辑器,在考虑了各种实现方案后,最终定下来的做法就是把每段文字当做一个EditText,每个图片当做一个ImageView,文字和图片放在LinearLayout里。当EditText内容是空的时候,如果用户在软键盘里按删除按钮,要把这个EditText删掉,并将焦点转移到上一个EditText。android官方没有提供监听删除事件的接口,所以只能自己实现。
首先来看效果图:
实现原理:
先不考虑edittext内容是空的情况。假如现在edittext有内容,那么我们只需要监听edittext的内容变化(addTextChangedListener)。如果edittext内容变少了,就说明有数据被删除了。
那有没有办法确保edittext永远有内容?这个实现起来很简单,只需要在edittext是空的时候,自动添加一个空格到edittext,并将edittext的焦点移到空格之后。
试想下,当你把edittext所有数据都删掉后,edittext会自动补充一个空格进去。在这之后,你每次按下删除键,都会将这个空格删掉,触发edittext的回调,并且在edittext里重新补充一个空格。如此循环往复,就能保证edittext永远有内容,并且每次删除事件都能捕获到。
但还有个问题,空格占的空间较