關於ListView中EditText在軟鍵盤彈出后的焦點問題


轉自:http://www.cnblogs.com/haofei/p/3305030.html

在ListView中,每次彈出軟鍵盤后就會重新調用getView()方法,導致EditText失去焦點。

解決辦法:在getView()方法中添加監聽器:

editText.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    index = position;
                }
                return false;
            }
        });

並且在getView方法結束前為EditText添加焦點:

editText.clearFocus();
        if (index != -1 && index == position) {
            // 如果當前的行下標和點擊事件中保存的index一致,手動為EditText設置焦點。
               editText.requestFocus();
        }

但是這樣,又會有新的問題出現,EditText中的光標停在最前面,並且不閃動,點擊軟鍵盤輸入任何東西也不會在EditText中顯示,這樣,就要在EditText獲得焦點后再做一個處理:

editText.setSelection(editText .getText().length());

這樣,問題就很好的解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM