Android 软键盘的监听(监听高度,是否显示)

来源:互联网 发布:成都尚学堂怎么样 知乎 编辑:程序博客网 时间:2024/06/06 08:32

Android官方本身没有提供一共好的方法来对软键盘进行监听,但我们实际应用时,很多地方都需要针对软键盘来对UI进行一些优化。

以下是整理出来的一个不错的方法,大家可以使用。

public class SoftKeyboardUtil {public static void observeSoftKeyboard(Activity activity, final OnSoftKeyboardChangeListener listener) {final View decorView = activity.getWindow().getDecorView();decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {            int previousKeyboardHeight = -1;@Overridepublic void onGlobalLayout() {Rect rect = new Rect();decorView.getWindowVisibleDisplayFrame(rect);int displayHeight = rect.bottom - rect.top;int height = decorView.getHeight();                int keyboardHeight = height - displayHeight;                if (previousKeyboardHeight != keyboardHeight) {                    boolean hide = (double) displayHeight / height > 0.8;                    listener.onSoftKeyBoardChange(keyboardHeight, !hide);                }                previousKeyboardHeight = height;}});}public interface OnSoftKeyboardChangeListener {void onSoftKeyBoardChange(int softKeybardHeight, boolean visible);}}




3 2
原创粉丝点击