我的 LibGDX android 应用程序中有一个表格,位于一些文本字段(一行)下面,下面有一个按钮(提交)。 我的问题是,当文本字段聚焦(单击它)并且出现软键盘时,如何向上“滑动”表格、文本字段和按钮? 换句话说,如何让软键盘不覆盖我的其他物体。 此解决方案可能与以下问题相关: How can i find the height of soft-keyboard in a LibGDX application
非常感谢。
最佳答案
我找到了解决我的问题的方法,它有效,但我认为不太干净。 所以,我的场景是:
- 一个容器表,包含一个 ScrollPane(另一个表),在此滚动表下有两个 TextFields,在它们下面有一个 Submit 按钮
- 容器表设置为填充父级(全屏)
- 文本字段和按钮与容器表格底部对齐
问题在于,当 OnscreenKeybord 可见时,它覆盖了底部对象(文本字段和按钮)和滚动表格的一部分。
我的解决方案/解决方法是:
keyboard = new OnscreenKeyboard() {
@Override
public void show(boolean visible) {
Gdx.input.setOnscreenKeyboardVisible(visible);
// Hmmmm...
container.invalidate();
if (visible) {
// TODO get OsK height somehow!!!
container.padBottom(310);
} else {
container.padBottom(0);
}
}
};
textFld1.setOnscreenKeyboard(keyboard);
textFld2.setOnscreenKeyboard(keyboard);
在“提交”按钮的 InputListener 上(触摸时)我有一个清理功能,例如:
textFld1.setText("");
textFld2.setText("");
stage.unfocus(textFld1);
stage.unfocus(textFld2);
keyboard.show(false);
这样当软键盘显示时容器表就会被填充,按下提交按钮后又会恢复;软键盘也被隐藏。
现在,此解决方法存在两个问题:
我还没有找到获取软键盘高度的方法;正如您在示例代码中看到的,我为向上填充选择了任意值,因此在我的模拟器上看起来不错
如果按下硬按钮“后退”或模拟器中的“ESC”,软键盘将隐藏,但表格的向上填充仍然存在;我没有找到如何确定软键盘是否可见
如果有人找到我的问题的其他解决方案,请发布。
谢谢。
关于android - 显示软键盘时如何 "push up"屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467006/