Android中有什么方法可以获取设备虚拟键盘的高度

android中有什么方法可以在运行时获取android设备虚拟键盘的高度。其实我想在键盘上方显示文本框。

慕森卡
浏览 347回答 3
3回答

白衣染霜花

是的,您可以在Viewtree Observer和全局布局侦听器的帮助下,尝试以下提到的步骤获取布局的根视图获取此根的Viewtree观察器,并在此之上添加全局布局侦听器。现在,无论何时显示软键盘,Android都会重新调整屏幕大小,您将在监听器上收到呼叫。这就是现在唯一需要做的就是计算重新调整大小后根视图与原始大小之间的高度差。如果差异大于150,则认为这是因为键盘已膨胀。以下是示例代码root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){     public void onGlobalLayout(){           int heightDiff = root.getRootView().getHeight()- root.getHeight();           // IF height diff is more then 150, consider keyboard as visible.          }  });问候,Techfist

沧海一幻觉

我为此尝试了许多建议的方法,但似乎没有一种方法适用于Android SDL。我认为这是因为SDL显示是“全屏”,还是因为它位于“ AbsoluteLayout”中,因此“视图”的高度从未真正改变过。这种方法对我有用:mRootWindow = getWindow();mRootView = mRootWindow.getDecorView().findViewById(android.R.id.content);mRootView.getViewTreeObserver().addOnGlobalLayoutListener(    new ViewTreeObserver.OnGlobalLayoutListener() {    public void onGlobalLayout(){        Rect r = new Rect();        View view = mRootWindow.getDecorView();        view.getWindowVisibleDisplayFrame(r);        // r.left, r.top, r.right, r.bottom    }    });
打开App,查看更多内容
随时随地看视频慕课网APP