三星手机自带的输入法与搜狗输入法不同,搜狗输入法高度是固定的,但是三星输入法在输入中文 的时候高度会随着变化,这样导致在Adapter中会重复调用getView,导致Edittext失去焦点,解决办法:
记录触摸的EditText的位置:
<span style="font-size:14px;"><span style="white-space:pre"> </span>viewHolder.etContent.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View view, MotionEvent event) { // 在TOUCH的UP事件中,要保存当前的行下标,因为弹出软键盘后,整个画面会被重画 // 在getView方法的最后,要根据index和当前的行下标手动为EditText设置焦点 if (event.getAction() == MotionEvent.ACTION_UP) { index = position; AppLog.redLog("img", "index--1->"+index+",position====1==="+position); } return false; } });</span>
span style="white-space:pre"> </span>判断记录的位置和当前的位置是否一致来获取焦点</span>
<span style="font-size:14px;"><span style="white-space:pre"> </span>viewHolder.etContent.clearFocus(); if (index != -1 && index == position) { // 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。 viewHolder.etContent.requestFocus(); } </span>
时间: 2024-10-04 19:28:18