2010-10-13 15 views
6

Ho una vista a schede con un'attività per scheda e quando passo dalla prima scheda, che ha un TextView, alla seconda scheda, che mostra solo un elenco cliccabile, la tastiera morbida è ancora lì. Voglio che vada via, così ho provato questo:Nascondere la tastiera virtuale sull'attività senza alcuna operazione con la tastiera

public static void hideSoftKeyboard (Activity activity, View view) { 
    InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
} 

ma questo non funziona, perché non c'è vista rilevante per fornire, in quanto non v'è alcuna Visualizza sullo schermo che prende l'input da tastiera. Qualche suggerimento su come risolvere questo?

risposta

16

Prova questa in terza linea di codice:

imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);

16

Prova la risposta fornita da Joe: Stop EditText from gaining focus at Activity startup

Posizionare questo all'interno il manifesto per la vostra attività: android:windowSoftInputMode="stateHidden"

Questa è una domanda comune, ed è bello sapere che il framework in realtà gestisce questo molto bene.

+3

: -/Ho questo ma non ha aiutato. Quando uso il commutatore di attività per passare da un'attività alla tastiera fino alla mia attività (che non ha input di testo e quindi non ha bisogno di tastiera) la tastiera rimane alzata. – ArtOfWarfare

+1

Anche questo non funziona se ci si trova in una sola attività, toccare un testo di modifica per mostrare la tastiera, quindi premere il pulsante indietro dell'intestazione della barra delle azioni. Ritornare all'attività precedente non nasconde la tastiera anche se ha l'impostazione windowSoftInputMode. –

4

Si può anche provare

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

4
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
0

Questo metodo può aiutare a nascondere la tastiera in qualsiasi modo. Questo sta funzionando bene per me

public void hideKeyboard(Activity activity, View view) { 
     if (activity != null) { 

      if(view != null) 
      { 
       try { 
        InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE); 
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      }else 
      { 
       activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
      } 

     } 
    } 
+0

È utile anche per nascondere il softkey in una visualizzazione Web SEMPRE? – Criss

Problemi correlati