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

标签 android android-studio keyboard

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

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@覆盖
公共(public)无效 onGlobalLayout() {
矩形矩形 = 新矩形();
view.getWindowVisibleDisplayFrame(rect);

int screenHeight = view.getRootView().getHeight();
int keyboardHeight = screenHeight - rect.bottom;
如果(键盘高度!= 0){
如果(方向 == Configuration.ORIENTATION_LANDSCAPE)
AppConfig.landscapeKeyboardHeight = 键盘高度;
否则如果(方向 == Configuration.ORIENTATION_PORTRAIT)
AppConfig.portraitKeyboardHeight = 键盘高度;
}
}
});

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

最佳答案

在获取显示某些对话框的键盘高度之前,我遇到了同样的问题。您可以使用下面的方法来解决它。

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");
            }
        }
    });

关于android - 打开应用程序时如何获取键盘高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37485402/

相关文章:

Android 操作栏和菜单访问

android-studio - 如何在没有控制台窗口的情况下从 .bat 运行 AVD 模拟器?

gradle - Javafx应用程序的Gradle构建:由于缺少系统属性,虚拟键盘无法正常工作

delphi - 不处理鼠标和键盘事件的表单

android - 如何为 Android 创建与 Talkback 配合使用的自定义键盘

android - 如何在不耗尽内存的情况下在 droid 中制作益智应用程序?

android - Android 中的 HashMap

android - 如何解决 GServices 的安全异常?

Android Gradle 排除 Debug BuildType 的类

android - 如何替换android中的应用程序停靠栏图标