Codename One 键盘封面图片

Codename One Keyboard Cover Image

我有一个带有文本字段的 Android 应用程序。当我开始打字时,键盘将背景图像向上推。

我希望图像保留在原位,而键盘覆盖它。

将布局更改为 BoxLayout 或 BorderLayout 对背景图像的位置没有任何影响,更改可滚动也没有影响:

container.setScrollableY(false);
form.setScrollableY(false);

我如何实现将图像保持在原位?

我无法弄清楚的另一件事是访问表单时光标已经在 TextField 中并且键盘可见,设置:

textField.requestFocus();

但这也没有达到预期的效果。

如有任何帮助,我们将不胜感激。

文本字段必须位于可滚动的父级中。

如果图像和文本字段在同一个容器中并且文本字段在图像上方,您可能会得到更接近第二张图像的内容。在 iOS 上,增加滚动区域以容纳虚拟键盘,在 Android 上,调整屏幕大小以容纳虚拟键盘。

随着屏幕尺寸的调整,这可能会导致细微的行为差异。

除了 Shai 的回答之外,您还可以尝试将 TextField 父容器放在 BorderLayout 容器的 north 中,将图像容器放在 center。这可以以某种方式强制键盘在中心的图像上滑动。

要在显示表单时回答 TextField 编辑的部分,请在 TextField 表单中添加以下内容

form.setEditOnShow(textField);

如果 TextField 中已有一些文本,您可能需要进行以下设置以将光标置于末尾:

CN.callSerially(() -> {
    textField.setCursorPosition(textField.getText().length());
    form.repaint(); // optional form repainting
});