Android: Detect softkeyboard open

后端 未结 8 2137
栀梦
栀梦 2020-11-29 07:31

When the soft keyboard opens I want a scroll view to scroll down to the bottom.

For this I can use: fullScroll(View.FOCUS_DOWN);

But how do I fire that comma

8条回答
  •  青春惊慌失措
    2020-11-29 07:43

    Here is my solution:

    1/ A simple interface

    public interface KeyboardVisibilityListener {
        void onKeyboardVisibilityChanged(boolean keyboardVisible);
    }
    

    2/ A utility method (put it where you want, for instance in a class named KeyboardUtil)

    public static void setKeyboardVisibilityListener(Activity activity, KeyboardVisibilityListener keyboardVisibilityListener) {
        View contentView = activity.findViewById(android.R.id.content);
        contentView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            private int mPreviousHeight;
    
            @Override
            public void onGlobalLayout() {
                int newHeight = contentView.getHeight();
                if (mPreviousHeight != 0) {
                    if (mPreviousHeight > newHeight) {
                        // Height decreased: keyboard was shown
                        keyboardVisibilityListener.onKeyboardVisibilityChanged(true);
                    } else if (mPreviousHeight < newHeight) {
                        // Height increased: keyboard was hidden
                        keyboardVisibilityListener.onKeyboardVisibilityChanged(false);
                    } else {
                        // No change
                    }
                }
                mPreviousHeight = newHeight;
            }
        });
    }
    

    3/ Use from an Activity this way (a good place is in onCreate):

    KeyboardUtil.setKeyboardVisibilityListener(this, mKeyboardVisibilityListener);
    

提交回复
热议问题