Obtener la altura del teclado en Lollipop

¿Qué cambió en Lollipop sobre la altura del teclado?

Tenía un método que usando getViewTreeObserver() correctamente devuelto la altura del teclado en cada versión antes de Lollipop (probado en ldpi, mdpi, hdpi y xhdpi – sin problemas), pero parece que en Lollipop la altura devuelta es un poco más grande que La altura real del teclado.

En mi Asus Nexus 7 tengo una altura con unos 70 px más grande que la altura real.

¿Alguien sabe cómo conseguir la altura real del teclado en Lollipop?

Intente este código siguiente cuando el teclado se abre.

 @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) public int calculateScreenHeightForLollipop() { WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Point size = new Point(); display.getSize(size); return size.y; } /** * Call this function to resize the emoji popup according to your soft keyboard size */ public void setSizeForSoftKeyboard() { rootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); int screenHeight; if (Build.VERSION.SDK_INT >= 5.0) { screenHeight = calculateScreenHeightForLollipop(); } else { screenHeight = rootView.getRootView().getHeight(); } int heightDifference = screenHeight - (r.bottom - r.top); int resourceId = mContext.getResources() .getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { heightDifference -= mContext.getResources() .getDimensionPixelSize(resourceId); } if (heightDifference > 100) { keyBoardHeight = heightDifference; setSize(LayoutParams.MATCH_PARENT, keyBoardHeight); if (!isOpened) { if (onSoftKeyboardOpenCloseListener != null) onSoftKeyboardOpenCloseListener.onKeyboardOpen(keyBoardHeight); } isOpened = true; if (pendingOpen) { showAtBottom(); pendingOpen = false; } } else { isOpened = false; if (onSoftKeyboardOpenCloseListener != null) onSoftKeyboardOpenCloseListener.onKeyboardClose(); } } }); } 
  • ImageView scaleType = "fitXY" no funciona en el dispositivo pre-lollipop dentro de Cardview | Androide
  • ¿Cómo notificar correctamente a MediaScanner sobre una carpeta, incluso en dispositivos Nexus / Kitkat?
  • Cómo persistir el permiso en android API 19 (KitKat)?
  • Android4.4 no puede manejar la intención de sms con "vnd.android-dir / mms-sms"
  • Autostart html5 video usando el navegador android 4
  • TWO_SWIPE_DOWN TAP no puede capturar en Google Glass GDK (XE16)
  • SSL cambios en android kitkat mantener la conexión de trabajo?
  • Compruebe si gps está encendido En Kitkat (4.4)
  • Cuadro de diálogo de alerta personalizada que parece extraño en Android 4.x
  • ¿Cómo se puede utilizar ViewPropertyAnimator para establecer Width a un valor específico
  • Las longitudes incorrectas del arreglo, el encargado de la notificación causan el choque del teléfono en 4.4
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.