当前位置: 首页 > 知识库问答 >
问题:

如何在应用程序打开时获取键盘高度

蒋啸
2023-03-14

我使用了下面的代码来获取键盘高度。

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect rect = new Rect();
                view.getWindowVisibleDisplayFrame(rect);

                int screenHeight = view.getRootView().getHeight();
                int keyboardHeight = screenHeight - rect.bottom;
                if(keyboardHeight != 0){
                    if(orientation == Configuration.ORIENTATION_LANDSCAPE)
                        AppConfig.landscapeKeyboardHeight = keyboardHeight;
                    else if(orientation == Configuration.ORIENTATION_PORTRAIT)
                        AppConfig.portraitKeyboardHeight = keyboardHeight;
                }
            }
        });

但这只在应用程序至少第一次打开键盘时才会给出高度。我想要键盘的高度,甚至在它第一次打开之前。有什么方法可以做到这一点吗?提前谢谢...

共有1个答案

司马念
2023-03-14

我以前也遇到过同样的问题,因为显示一些对话框时需要获得键盘的高度。你可以用下面的方法来解决这个问题。

rootView = getWindow().getDecorView().getRootView();
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            Rect rect = new Rect();
            rootView.getWindowVisibleDisplayFrame(rect);

            int screenHeight = rootView.getHeight();
            int keyboardHeight = screenHeight - (rect.bottom - rect.top);

            if(keyboardHeight > screenHeight / 3){
                keyboardActive = true;
                Log.d("Keyboard", "Active");

            }
            else{
                keyboardActive = false;
                Log.d("Keyboard", "Not Active");
            }
        }
    });
 类似资料:
  • 问题内容: 不同的iOS设备上的键盘高度不同。有人知道我如何以编程方式获取设备键盘的高度吗? 问题答案: 在Swift中: 您可以通过订阅通知来获取键盘高度。(假设您想知道显示的高度是多少)。 像这样: 迅捷2 迅捷3 斯威夫特4 然后,您可以使用以下功能访问高度: 迅捷2 迅捷3 斯威夫特4

  • 问题内容: 我想在一个按钮中创建一个事件。 当我单击按钮时,我想打开Windows虚拟键盘。 您能帮我提供代码吗? 谢谢您的合作。 最好的祝福。 问题答案: 我认为这就是这么简单:

  • 我有一个活动使用“adjustPan”作为其调整大小配置,我需要在不使用“adjustResize”的情况下计算键盘高度,因为我需要将某些视图保留为全屏(这意味着它们应该保留在原位,键盘应该隐藏它们),并将视图放在键盘正上方。我们的应用程序有一个消息按钮,我通过按钮点击打开键盘。当它发生时,我使用OnGlobalLayoutListener并使用“getWindowVisibleDisplayFr

  • 我有cordova应用程序,它从web加载html页面。现在这些网页都有输入字段,所以当点击这些输入字段时,会出现android默认键盘。我不想使用这个键盘,因为已经有自定义键盘作为侧应用程序中的弹出窗口。我尝试的是:在androidM中的我的活动内添加以下配置anifest.xml 但是没有什么能阻止这个默认键盘的出现。有人能建议我如何禁用我的应用程序的键盘吗。

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?