2011-12-08 1 views

risposta

-3

Si potrebbe provare qualcosa sulla falsariga di questo:

InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
boolean showingKeyboard = imm.isActive(); 

Spero che questo aiuti!

EDIT:

L'altra opzione è semplicemente quello di forzare la tastiera aperta o chiusa, a seconda di ciò che si desidera che l'utente per vedere :) Questo porterebbe ad un comportamento un uso più prevedibile e probabilmente migliorare l'esperienza dell'utente.

+1

Restituisce vero tutto l'ora, anche quando la mia tastiera non è visibile sullo schermo – aryaxt

+0

, questo non funzionerà se qualcuno sta usando la lunga pressione del menu per attivare la tastiera. Ti dice solo se una vista è attiva per la ricezione di eventi con tastiera morbida. –

+0

@ Pheonixblade9: Questo non funziona, leggi il documento su 'isActive()' più attentamente! Non si tratta di visibilità ma dello stato 'attivo'. – Bondax

1

provare this o this soluzione dal momento che la sua non è possibile all'interno di metodo "semplice" sdk invocazione

3

Penso che questo thread dovrebbe rispondere alla tua domanda. Per riassumere, puoi dare alla tua vista radice della tua attività un ID, come "@ + id/activityRoot", e quindi collegare un GlobalLayoutListener al ViewTreeObserver per quella vista. Nel listener è dove si controlla la visibilità della tastiera, in questo modo:

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 
    } 
    } 
}); 

Questa è una combinazione di @Reuben_Scratton e @ risposte di Yogesh nel thread di cui sopra.

UPDATE: Si noti che la documentazione per keyboardHidden dice che tornerà sempre Configuration.KEYBOARDHIDDEN_YES se c'è una tastiera disco disponibili sul dispositivo (vale a dire come un Motorola Droid 1 & 2)

+4

Non funziona. Restituisce sempre Configuration.KEYBOARDHIDDEN_NO a me (nessuna tastiera sul mio dispositivo). –