这几天在做评论功能,需要监听软键盘状态,来显示和隐藏一个布局。最后发现一个比较好用的方法
final View decorView = activity.getWindow().getDecorView(); decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); //1、获取main在窗体的可视区域 decorView.getWindowVisibleDisplayFrame(rect); //2、获取main在窗体的不可视区域高度,在键盘没有弹起时,main.getRootView().getHeight()调节度应该和rect.bottom高度一样 int mainInvisibleHeight = decorView.getRootView().getHeight() - rect.bottom; int screenHeight = decorView.getRootView().getHeight();//屏幕高度 //3、不可见区域大于屏幕本身高度的1/4:说明键盘弹起了 if (mainInvisibleHeight > screenHeight / 4) { “键盘弹起” } else {
“键盘隐藏”
}
}});感谢原作者 https://blog.youkuaiyun.com/li5685918/article/details/50068503