¿Es posible detectar si un teclado está visible en la pantalla o no?Android - ¿Detecta el teclado visible?
Gracias
¿Es posible detectar si un teclado está visible en la pantalla o no?Android - ¿Detecta el teclado visible?
Gracias
Usted puede tratar de algo a lo largo de las líneas de esto:
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean showingKeyboard = imm.isActive();
Espero que esto ayude!
EDIT:
La otra opción es simplemente para forzar el teclado abierto o cerrado, dependiendo de lo que desea que el usuario vea :) Esto llevaría a un comportamiento predecible y un uso más probable es mejorar la experiencia del usuario.
Creo que este thread debe responder a su pregunta. Para resumir, puede darle una identificación a la vista raíz de su actividad, como "@ + id/activityRoot", y luego enganchar un GlobalLayoutListener en el ViewTreeObserver para esa vista. En el oyente es donde se comprueba la visibilidad del teclado, así:
final View activityRootView = findViewById(R.id.activityRoot);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (getResources().getConfiguration().keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) { // Check if keyboard is not hidden
// ... do something here
}
}
});
Esta es una combinación de @Reuben_Scratton y @ respuestas de Yogesh en el hilo anterior.
ACTUALIZACIÓN: Tenga en cuenta que la documentación de keyboardHidden dice que siempre devolverá Configuration.KEYBOARDHIDDEN_YES si hay un teclado físico disponible en el dispositivo (es decir, como un Motorola Droid 1 & 2)
No funciona. Siempre devuelve Configuration.KEYBOARDHIDDEN_NO para mí (no hay un teclado duro en mi dispositivo). –
Devuelve cierto todo el tiempo, incluso cuando mi teclado no está visible en la pantalla – aryaxt
, esto no funcionará si alguien está utilizando el menú de pulsación larga para activar el teclado. Le dice solo si una vista está activa para recibir eventos de teclado suave. –
@ Pheonixblade9: ¡Esto no funciona, lea el documento 'isActive()' con más cuidado! No se trata de visibilidad, sino del estado "activo". – Bondax