转自: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());
这样,问题就很好的解决了。
解决ListView中软键盘弹出导致EditText焦点丢失的问题
本文详细介绍了在ListView中,软键盘弹出后导致EditText失去焦点的解决方案,包括添加监听器、清除焦点、设置光标位置等步骤。通过实践这些方法,可以有效解决该问题,确保用户输入操作的连续性和正确性。
723

被折叠的 条评论
为什么被折叠?



