Android监听键盘是不是弹出,以及获取软键盘的高度
Android监听键盘是否弹出,以及获取软键盘的高度
网上介绍过监听键盘是否弹出的方法,我自己也是尝试过,不是很好用,今天发现了一种比较好的监听键盘是否弹出的方法,用起来十分简单,同时也可以通过此方法获取到键盘的高度
//如何获取软键盘的高度 final RelativeLayout et = (RelativeLayout)findViewById(R.id.rootview); et.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ //当键盘弹出隐藏的时候会 调用此方法。 @Override public void onGlobalLayout() { Rect r = new Rect(); //获取当前界面可视部分 MainActivity.this.getWindow().getDecorView().getWindowVisibleDisplayFrame(r); //获取屏幕的高度 int screenHeight = MainActivity.this.getWindow().getDecorView().getRootView().getHeight(); //此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数 int heightDifference = screenHeight - r.bottom; Log.d("Keyboard Size", "Size: " + heightDifference); } });
使用起来很简单只需判断键盘高度是否为0 就可以知道键盘是否弹出了。
getDecorView() 获取的是整个应用的view 包括标题栏,但是不包括状态栏,r.top就是状态栏的高度。