L'obiettivo è selezionare i componenti dell'interfaccia utente quando si utilizza qualcosa oltre al tocco (ad esempio, un tasto direzionale, una tastiera, ecc.). Qualsiasi visualizzazione può ricevere lo stato attivo, sebbene alcuni non siano attivabili per impostazione predefinita. (Puoi rendere una vista focalizzabile con setFocusable(true)
e forzarne la messa a fuoco conrequestFocus()
.)
Tuttavia, è importante notare che quando si è in modalità touch, la messa a fuoco è disabilitata . Quindi, se stai usando le dita, cambiare lo stato attivo a livello di codice non fa nulla. L'eccezione è per le viste che ricevono input da un editor di input. Un EditText
è un tale esempio. Per questa situazione speciale setFocusableInTouchMode(true)
viene utilizzato per far sapere alla tastiera virtuale dove inviare l'input. An EditText
ha questa impostazione per impostazione predefinita. La tastiera virtuale si aprirà automaticamente.
Se non vuoi che la tastiera morbida appaia automaticamente, puoi sopprimerla temporaneamente come ha notato @abeljus:
InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Quando un utente fa clic su EditText
, dovrebbe comunque mostrare la tastiera.
Ulteriore lettura: