搜索

首页  >  问答  >  正文

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

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

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

PHPzPHPz2901 天前714

全部回复(2)我来回复

  • 高洛峰

    高洛峰2017-04-18 10:33:30

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

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 10:33:30

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

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

    回复
    0
  • 取消回复