获取软件盘,状态栏高度

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

            @Override
            public void onGlobalLayout(){

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

                int screenHeight = relativeLayout.getRootView().getHeight();
                int heightDifference = screenHeight - (r.bottom - r.top);
                Log.e("Keyboard Size",""+ heightDifference);
                if(height==0){
                    height=heightDifference;//状态栏高度
                }

                if(heightDifference>100){
                    LinearLayout.LayoutParams layoutParams= (LinearLayout.LayoutParams) relativeLayout.getLayoutParams();
                    layoutParams.bottomMargin=heightDifference-height;  //软键盘高度
                    relativeLayout.setLayoutParams(layoutParams);
                }

                //boolean visible = heightDiff > screenHeight / 3;
            }
        });
原文地址:https://www.cnblogs.com/g-sheng/p/5768242.html