如何获得Android键盘的高度?

时间:2015-04-16 04:38:35

标签: android keyboard

如何获得Android键盘的高度?

我试试:

KeyboardView keyboardView = new KeyboardView(_activity.getApplicationContext(), null);
Log.i("","xxx height " + keyboardCustom.mKeyboardView.getHeight());
            Log.i("","xxx height " + keyboardCustom.mKeyboardView.getBottom());

但总是得到0。

1 个答案:

答案 0 :(得分:7)

使用OnGlobalLayoutListener获取键盘高度或实现上面的代码段

  • chatRootLayout是您的xml根目录布局
  • 将此rootLayout作为checkKeyboardHeight中的parentLayout参数传递

    private void checkKeyboardHeight(final View parentLayout)
    {
      chatRootLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() 
      {
            @Override
            public void onGlobalLayout() 
            {
                    Rect r = new Rect();
    
                    chatRootLayout.getWindowVisibleDisplayFrame(r);
    
                    int screenHeight = chatRootLayout.getRootView().getHeight();
                    int keyboardHeight = screenHeight - (r.bottom);
    
                    if (previousHeightDiffrence - keyboardHeight > 50) 
                    {                           
                        // Do some stuff here
                    }
    
                    previousHeightDiffrence = keyboardHeight;
                    if (keyboardHeight> 100) 
                    {
                        isKeyBoardVisible = true;
                        changeKeyboardHeight(keyboardHeight);
                    } 
                    else
                    {
                        isKeyBoardVisible = false;
                    }
                }
        });
    

    }

这是changeKeyboardHeight()方法

private void changeKeyboardHeight(int height) 
{
    if (height > 100) 
    {
            keyboardHeight = height;
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, keyboardHeight);
            yourLayout.setLayoutParams(params);
    }
}