使用 windowSoftInputMode adjustmentPan 在 ListView 中编辑文本

发布于 2024-10-16 13:17:46 字数 405 浏览 3 评论 0原文

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

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

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

谢谢

I have a ListView with an EditText in each row. I have set windowSoftInputMode to adjustPan in the manifest for this activity, so when I tap on an EditText the layout pans so that it is visible above the keyboard.

This works the first time I tap on an EditText. But if I hit the back button to dismiss the keyboard, then tap the same EditText again (without tapping anything else, so the cursor remains in the first EditText), the keyboard comes back up but the layout does not pan this time. The result of this is that the EditText is obscured behind the keyboard.

Has anyone experienced this behaviour / knows how to solve it?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

层林尽染 2024-10-23 13:17:46

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

我已经对 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放弃焦点。然后再次点击它即可获得所需的行为。

Still not sure why this happens, but I have a solution.

I have subclassed EditText and overridden the method onKeyPreIme(int keyCode, KeyEvent event) as follows:

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

Now when the back key is pressed, the EditText gives up focus. Then tapping it again has the desired behaviour.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文