大概方法: OnGlobalLayoutListener方法监听window的变化 如果可见屏幕的高度小于屏幕高度的80% 则说明弹出了
这种方式通常是在 默认的弹出冲突了 或者已经使用了默认的弹出方式的情况下使用。。
public void addOnSoftKeyBoardVisibleListener(Activity activity) {
final View decorView = activity.getWindow().getDecorView();
decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
//计算出可见屏幕的高度
int displayHight = rect.bottom - rect.top;
//获得屏幕整体的高度
int hight = decorView.getHeight();
//获得键盘高度
keyboardHeight = hight - displayHight;
boolean visible = (double) displayHight / hight < 0.8;
if (visible != isVisiableForLast) {
// listener.onSoftKeyBoardVisible(visible,keyboardHeight );
// ToastUtils.showSuccess(getApplicationContext(),"变化了 "+ visible);
if (visible) {//软键盘显示并且pop显示
if (popEditWindow != null && popEditWindow.isShowing()) {
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtil.dip2px(50));
layoutParams.topMargin = displayHight - DisplayUtil.dip2px(50);
relEnter.setLayoutParams(layoutParams);
relEnter.setVisibility(View.VISIBLE);
}
} else {
if (popEditWindow != null && popEditWindow.isShowing()) {
relEnter.setVisibility(View.GONE);
//hiddenEditViewPop2();
}
}
}
isVisiableForLast = visible;
}
});
}