ListView中的EditText在输入到行末自动换行的时候总是失去焦点

Situation:
LiveView中的Item都是一个自定义的View,其中有一个EditText控件用于输入文字。现在输入的过程中一旦到了一行的末尾自动换行的时候,焦点就失去了,要重新点击该EditText控件才可以继续输入。

为什么会这样,是因为listview重新绘制了嘛?怎么解决。。

阅读 3.6k
2 个回答

listview重绘了,整个过程重绘了三次,点击edittext软键盘弹出导致listview压缩,这是第一次;edittext内容过多换行导致edittext高度变化进一步导致item高度变化,得重绘,这是第二次;重绘会导致edittext失去焦点,软键盘隐藏,listview展开,进行第三次重绘。那么,是否解决思路也就知道了呢?既然是失去焦点引起,那么就再获取焦点了,记录上次操作的edittext,在adapter的getView方法里判断一下,是这个edittext的话就requestFocus一下。

ListView滚动促使其重新LayoutChildren, 最后导致EditText失去输入焦点.
由于EditText在ListView会有不适应的这个症状, 建议还是换RecyclerView吧...

p.s.应用市场里少有应用会这么设计: ListView中放一个EditText...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题