ListView中使用EditView焦点丢失问题
2016年03月11日
好久没有更新博客了,好像从开始工作以来,就没有折腾这些东西了。
刚好今天遇到个问题,正好记录下来
问题
在ListView当中使用EditView时,第一次点击,会弹出小键盘,然后焦点就消失了。
分析
第一次点击EditView,弹出小键盘,ListView会调用getView()刷新,然后EditView的焦点就飞了。。。第二次点击,小键盘已经存在,所以不会调用再次刷新,所以焦点不会消失了
思路
每次失去焦点之前记录当前View和光标位置,下次调用getView的时候恢复
解决方法
目前我用的下面的方法
1 | // 定义两个标记位 |
记住虽然你记录了位置,但是数据并没有记录,每次刷新会重新赋值ListView上的值,需要的话记得保存起来
特技
其实,处理焦点失去还有个更简单的方法,只是有点小瑕疵(如果ListView的下面还有个EditView,会被挤到上面去)
如下
在manifest文件的该ListView所在Activity里添加这一句
1 | android:windowSoftInputMode="adjustResize" |
你可以试试,确实有效,但是不适合我
还有,我发现这问题,淘宝是用的弹出输入框,哪天试试