首页 > 开发 > Android > 正文

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

2017-09-08 15:24:01  来源:网友分享

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

解决方案

答: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;                }            });