Как получить высоту клавиатуры, когда ничего не настроить? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь получить высоту клавиатуры Android с помощью следующего кода.

Решение popupWindow не работает на некоторых устройствах, есть ли другое решение?

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

                @Override
                public void onGlobalLayout() {

                    Rect r = new Rect();
                    parentLayout.getWindowVisibleDisplayFrame(r);

                    int screenHeight = parentLayout.getRootView().getHeight();
                    int heightDifference = screenHeight - (r.bottom);

                    previousHeightDiffrence = heightDifference;

                       if (heightDifference > 100) {
                        isKeyBoardVisible = true;
                        changeKeyboardHeight(heightDifference);

                    } else {

                       if(emojiKeyboard.getVisibility()==View.INVISIBLE){
                          emojiKeyboard.setVisibility(View.GONE);
                        }

                       isKeyBoardVisible = false;
                    }

                }
            });

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я бы выбрал решение insets - где rootWindowInsets.systemWindowInsetBottom будет включать клавиатуру, если она есть.Взгляните на документацию

0 голосов
/ 15 мая 2018
final Window mRootWindow = getWindow();
        ll_main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
            public void onGlobalLayout(){
                int screenHeight = ll_main.getRootView().getHeight();
                Rect r = new Rect();
                View view = mRootWindow.getDecorView();
                view.getWindowVisibleDisplayFrame(r);

                int keyBoardHeight = screenHeight - r.bottom;
            }
        });

Полный код этой ссылки .эта ссылка также помогает для AdjustNothing.

...