有什么方法可以知道屏幕上键盘(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; } });