android - 如何获得软键盘的尺寸信息?
怪我咯
怪我咯 2017-04-17 11:24:26
[Android讨论组]

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(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;
                }
            });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号