ListView中的EditText,带有windowSoftInputMode adjustPan

时间:2011-02-10 14:09:30

标签: android listview android-edittext android-softkeyboard

我有一个ListView,每行有一个EditText。我已在此活动的清单中将windowSoftInputMode设置为adjustPan,因此当我点击EditText布局平移时,它会在键盘上方显示。

这是我第一次点按EditText时的效果。但是,如果我按下后退按钮以关闭键盘,然后再次点击相同的EditText(不点击任何其他内容,因此光标保留在第一个EditText),键盘重新启动,但布局不会平移时间。结果是EditText在键盘后面被遮挡了。

有没有人遇到过这种行为/知道如何解决它?

由于

1 个答案:

答案 0 :(得分:8)

仍然不确定为什么会这样,但我有一个解决方案。

我已将EditText子类化并覆盖方法onKeyPreIme(int keyCode, KeyEvent event),如下所示:

@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
    if(keyCode == KeyEvent.KEYCODE_BACK)
    {
        clearFocus();
    }
    return super.onKeyPreIme(keyCode, event);
}

现在,当按下后退键时,EditText会放弃焦点。然后再次点击它会产生所需的行为。