【问题标题】:EditText in ListView with windowSoftInputMode adjustPanListView 中的 EditText 与 windowSoftInputMode adjustPan
【发布时间】:2011-02-10 14:09:29
【问题描述】:

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

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

有没有人经历过这种行为/知道如何解决?

谢谢

【问题讨论】:

  • 对我来说听起来像是一个错误!

标签: android listview android-edittext android-softkeyboard


【解决方案1】:

仍然不确定为什么会发生这种情况,但我有一个解决方案。

我继承了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 将会摇摆不定。当你有时间时,请检查我捡到的另一个故障:stackoverflow.com/questions/15267137/…非常感谢
  • 不错的技巧。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
相关资源
最近更新 更多