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.
- Android 4.4 KitKat accidente aleatorio (Native crash en /system/lib/libc.so)
- Android - Problemas con el registro de la latencia de inicio
- Android KitKat: Todo el contenido de mi aplicación aparece detrás de ActionBar y StatusBar después de cambiar el color de StatusBar
- FitsSystemWindows y acolchado adicional en kitkat
- Nexus 5 (Kitkat 4.4) no autorizará mi equipo con Windows 8
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?
- ¿Cuál es la diferencia entre Dalvik VM y ART Runtime?
- Hacer que la emulación de la tarjeta de host funcione para el pago
- Enviar mensaje SMS mediante una aplicación no predeterminada de SMS en Android 4.4
- API de Valoración de KitKat de Android 4.4
- Android 4.4: ¿es válido el permiso WRITE_EXTERNAL_STORAGE en el almacenamiento externo primario / mnt / sdcard?
- Obtenga de forma fiable la altura de la barra de estado para resolver problemas de navegación translúcida de KitKat
- Instalación de controlador USB para Nexus 4 (con KitKat) en Windows 8 de 64 bits - "ningún controlador de software compatible"
- ¿Cómo funciona evaluateJavascript?
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(); } } }); }
- TargetSdkVersion 23 devuelve 0 array de longitud a través de accountManager.getAccounts ()
- Falsificar una llamada real en Android