2011-12-08 23 views

Respuesta

-3

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.

+1

Devuelve cierto todo el tiempo, incluso cuando mi teclado no está visible en la pantalla – aryaxt

+0

, 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. –

+0

@ Pheonixblade9: ¡Esto no funciona, lea el documento 'isActive()' con más cuidado! No se trata de visibilidad, sino del estado "activo". – Bondax

1

tratar this o this solución ya que no es posible dentro de método "simple" SDK invocación

3

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)

+4

No funciona. Siempre devuelve Configuration.KEYBOARDHIDDEN_NO para mí (no hay un teclado duro en mi dispositivo). –

Cuestiones relacionadas