ListView中的EditText与windowSoftInputMode属性的adjustPan

8
我有一个带有每行一个EditTextListView。我已经在清单文件中为此活动设置了windowSoftInputModeadjustPan,因此当我点击一个EditText时,布局会被调整以使其在键盘上方可见。
第一次点击EditText时,这个方法是有效的。但如果我按下返回按钮来关闭键盘,然后再次点击同一个EditText(不点击其他任何东西,所以光标仍停留在第一个EditText中),键盘会重新弹出,但此时布局不会再次调整。结果是,EditText被键盘遮挡。
有人遇到过这种情况/知道如何解决吗?
谢谢

听起来像是个bug! - Dori
1个回答

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会失去焦点。然后再次点击它就会有期望的行为。

谢谢Matt...很高兴我不是唯一一个注意到Android中所有这些异常的人。虽然还很年轻...但未来的API将会非常棒。如果你有时间,请查看我发现的另一个错误:http://stackoverflow.com/questions/15267137/android-adjustpan-not-working-after-edittext-container-has-been-translated 非常感谢。 - Houston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接