Il modo migliore per hide la tastiera in Android

Vorrei sapere il modo migliore per hide la tastiera dopo aver inserito il text in EditText.

1) setonfocuschangelistener: se l'ascoltatore viene spento solo quando viene premuto il button fatto o quando la messa a fuoco cambia da un edit text all'altro? Quando ho usato questo metodo, non ho potuto hide la tastiera.

  • runOnUiThread in frammento
  • Dopo l'aggiornamento di Android Studio alla versione 1.3.0, ottengo l'errore "l'integrazione NDK è deprecata nel plugin corrente"
  • Come get l'APK firma della firma?
  • L'utilizzo di un cursore è restituito da un LoaderManager in un AsyncTask
  • Libreria di pacchetti di supporto Android / compatibilità - utilizzare v4 o v13?
  • Nessun utente né il process corrente hanno android.permission.ACCESS_COARSE_LOCATION
  • 2) setOnTouchListener: Quando l'ho usato, potrei hide la tastiera, ma dubito che potrebbe esserci un problema. In questo caso, aggiungo l'ascoltatore di tonalità alla radice LinearLayout. Seguendo il codice che avevo usato:

    @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); txtUserName = (EditText)findViewById(R.id.txtUserName); btnLogin = (Button)findViewById(R.id.btnLogin); layoutView = (LinearLayout)findViewById(R.id.li); layoutView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(txtUserName .getWindowToken(), 0); return true; } }); } 

    All'interno della LinearLayout principale, sto usando altri due LinearLayout. Il problema che ho affrontato con il codice precedente è che in alcuni punti quando ho premuto, la tastiera non si nasconde. Il mio dubbio è che sto aggiungendo l'ascoltatore di touch solo con il layout di root, non dando ascoltatore touch con altri layout interni o altri controlli (TextView). Quando tocchi altri controlli o alcuni punti attorno al TextView (cioè i layout interni), la tastiera non si nasconde.

    Ciò significa che ho bisogno di aggiungere touchListener a tutti i layout oi controlli all'interno del layout di root? Come può essere gestita in modo migliore?

  • Come fare una forma con un angolo arrotondato a sinistra e un angolo arrotondato a sinistra?
  • Come aggiornare un filatore dynamicmente?
  • Come puoi get quante applicazioni installate nel mio dispositivo e ci sono nomi o le ultime informazioni accessibili?
  • L'applicazione di licenza Android non funziona?
  • TextView al centro dello schermo
  • Due istanze della mia applicazione android sono in esecuzione ... Come evitare questo?
  • 5 Solutions collect form web for “Il modo migliore per hide la tastiera in Android”

    È ansible utilizzare questo codice

     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mEditView.getWindowToken(), 0); 

    La mia risposta su questa domanda:

    Aggiunta di questo metodo:

     public static void hideSoftKeyboard(Activity activity) { InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); } 

    Se si desidera hide la tastiera quando si tocca lo schermo, è ansible eseguire le seguenti operazioni:

     @Override public boolean onTouchEvent(MotionEvent event) { hideSoftKeyboard(LoginActivity.this); return false; } 

    Spero che questo ti aiuterà.

    Prova questo :

     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

    può essere utilizzato per sopprimere la tastiera finché l'utente non ha effettivamente toccato la visualizzazione edittext.

    O

      inputManager.hideSoftInputFromWindow(editView.getWindowToken(), 0); 

    Un controllo semplice per il null o una prova di cattura evita la NullPointerException se non è mirata alcuna vista.

     public void hideKeyboard(Activity activity) { InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); if (activity.getCurrentFocus() != null) { inputManager.hideSoftInputFromWindow(activity.getCurrentFocus() .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } 

    Il modo migliore per hide la tastiera è solo dispatchDoneKey nella tua attività. La tastiera sarà nascosta se è in stato visibile.

     public void dispatchDoneKey() { dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.