为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森卡 2019-12-15 11:12:38
android中有什么方法可以在运行时获取android设备虚拟键盘的高度。其实我想在键盘上方显示文本框。
查看完整描述

3 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

是的,您可以在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



查看完整回答
反对 回复 2019-12-16
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

我为此尝试了许多建议的方法,但似乎没有一种方法适用于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

    }

    });



查看完整回答
反对 回复 2019-12-16
  • 3 回答
  • 0 关注
  • 346 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信