È possibile rilevare se una tastiera è visibile sullo schermo o no?Android - Rileva la tastiera visibile?
Grazie
È possibile rilevare se una tastiera è visibile sullo schermo o no?Android - Rileva la tastiera visibile?
Grazie
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.
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)
Non funziona. Restituisce sempre Configuration.KEYBOARDHIDDEN_NO a me (nessuna tastiera sul mio dispositivo). –
Restituisce vero tutto l'ora, anche quando la mia tastiera non è visibile sullo schermo – aryaxt
, 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. –
@ Pheonixblade9: Questo non funziona, leggi il documento su 'isActive()' più attentamente! Non si tratta di visibilità ma dello stato 'attivo'. – Bondax