android - 带有 windowSoftInputMode adjustPan 的 ListView 中的 EditText

标签 android listview android-edittext android-softkeyboard

我有一个 ListView,每行都有一个 EditText。我已将此 Activity 的 list 中的 windowSoftInputMode 设置为 adjustPan,因此当我点击 EditText 时,布局平移以便它在上方可见键盘。

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

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

谢谢

最佳答案

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

我将 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 放弃焦点。然后再次点击它会出现所需的行为。

关于android - 带有 windowSoftInputMode adjustPan 的 ListView 中的 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958103/

相关文章:

Android - 为 ListView 填充适配器的异步任务

java - 无法在 OpenCV for Android 中加载分类器

android - 检测 ListView(或 ScrollView)内的滚动位置

java - MaskedEditText 无法获取文本

android - 如何将 Material 设计风格设置为禁用 EditText (android)?

android - 处理输入时发现无效数据

android - android :state_enabled ="false"时无法设置颜色

android - ListView 不刷新 fragment 与 viewpager 选项卡

android - 始终设置选择的 EditText

android - 使用适配器和背景渐变颜色时,Android Studio崩溃