android - 显示软键盘时如何 "push up"屏幕

标签 android libgdx soft-keyboard


我的 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/

相关文章:

ionic-framework - ionic : Focusing on input field on sub-header makes keyboard hide list-elements

java - 如何获取带有子字符串文本的真实数据文本?

Android:使用 WebView.loadUrl 加载 JavaScript 但保留软键盘

android - 小部件未出现在小部件列表中

camera - 形状渲染器相机

java - LibGDX FreeTypeFontGenerator巨大字体消失字符

java - 使用 gdx-setup-ui.jar 初始化新项目后出现错误

Android:当焦点在 EditText 上时自动显示软键盘

Android Listview 测量高度

java - 将向上按钮添加到 PreferenceScreen