如何获得软键盘的尺寸信息?

有什么方法可以知道屏幕上键盘(keyboard)的尺寸大小吗?我用cocos2d进行编程,但我想知道屏幕上键盘的高度(无论是在Android的环境下还是在cocos2d的环境中)。我知道键盘中有一个getHeight()的方法,但是我不想创建新的键盘,只想用现在默认的那个。

请输入图片描述

阅读 10.9k
1 个回答

答:Rudy_TM
(最佳答案)
我的方法是使用如下代码:

myLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

                @Override
                public void onGlobalLayout() {
                    // TODO Auto-generated method stub
                    Rect r = new Rect();
                    parent.getWindowVisibleDisplayFrame(r);

                    int screenHeight = parent.getRootView().getHeight();
                    int heightDifference = screenHeight - (r.bottom - r.top);
                    Log.d("Keyboard Size", "Size: " + heightDifference);

                    //boolean visible = heightDiff > screenHeight / 3;
                }
            });

答:Azhar Yousuf
在cocos2d-x中,我们可以使用CCEditBox,在Extensions->GUI->CCEditBox中,你可以找到CCEditBox类别。关键在于,这项类别可以在屏幕上隐藏键盘,一旦编辑框(edit box)在屏幕上的位置过低,键盘将会自动上移。如果你使用的是cocos2d-x v2.1.3,你可以在samples->cpp->TestCpp->Classes->ExtensionTest->EditBoxTest中完成相关操作。


答:Habbot Phan
如果键盘不是全屏显示的,你可以使用如下代码:

content.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {

                @Override
                public void onGlobalLayout() {
                    // TODO Auto-generated method stub
                    if (keyBoardHeight <= 100) {
                        Rect r = new Rect();
                        content.getWindowVisibleDisplayFrame(r);

                        int screenHeight = content.getRootView()
                                .getHeight();
                        int heightDifference = screenHeight
                                - (r.bottom - r.top);
                        int resourceId = getResources()
                                .getIdentifier("status_bar_height",
                                        "dimen", "android");
                        if (resourceId > 0) {
                            heightDifference -= getResources()
                                    .getDimensionPixelSize(resourceId);
                        }
                        if (heightDifference > 100) {
                            keyBoardHeight = heightDifference;
                        }

                        Log.d("Keyboard Size", "Size: " + heightDifference);
                    }
                    // boolean visible = heightDiff > screenHeight / 3;
                }
            });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题