Situation:LiveView中的Item都是一个自定义的View,其中有一个EditText控件用于输入文字。现在输入的过程中一旦到了一行的末尾自动换行的时候,焦点就失去了,要重新点击该EditText控件才可以继续输入。
为什么会这样,是因为listview重新绘制了嘛?怎么解决。。
学习是最好的投资!
listview重繪了,整個過程重繪了三次,點擊edittext軟鍵盤彈出導致listview壓縮,這是第一次;edittext內容過多換行導致edittext高度變化進一步導致item高度變化,得重繪,這是第二次;重繪會導致edittext失去焦點,軟鍵盤隱藏,listview展開,進行第三次重繪。那麼,是否解決思路也就知道了呢?既然是失去焦點引起,那麼就再取得焦點了,記錄上次操作的edittext,在adapter的getView方法裡判斷一下,是這個edittext的話就requestFocus一下。
ListView滾動促使其重新LayoutChildren, 最後導致EditText失去輸入焦點.由於EditText在ListView會有不適應的這個症狀, 建議還是換RecyclerView吧...
p.s.應用市場裡少有應用會這麼設計: ListView放一個EditText...
listview重繪了,整個過程重繪了三次,點擊edittext軟鍵盤彈出導致listview壓縮,這是第一次;edittext內容過多換行導致edittext高度變化進一步導致item高度變化,得重繪,這是第二次;重繪會導致edittext失去焦點,軟鍵盤隱藏,listview展開,進行第三次重繪。那麼,是否解決思路也就知道了呢?既然是失去焦點引起,那麼就再取得焦點了,記錄上次操作的edittext,在adapter的getView方法裡判斷一下,是這個edittext的話就requestFocus一下。
ListView滾動促使其重新LayoutChildren, 最後導致EditText失去輸入焦點.
由於EditText在ListView會有不適應的這個症狀, 建議還是換RecyclerView吧...
p.s.應用市場裡少有應用會這麼設計: ListView放一個EditText...