Introducció a Amagar el teclat d'Android
Quan desenvolupeu aplicacions d'Android, hi ha moments en què heu d'amagar programadament el teclat suau. Això és especialment útil quan teniu un EditText i un Button a la vostra disposició i voleu que el teclat desaparegui després de fer clic al botó.
En aquesta guia, explorarem maneres senzilles i efectives d'aconseguir aquesta funcionalitat. Si seguiu els passos indicats, podreu millorar l'experiència d'usuari de la vostra aplicació gestionant la visibilitat del teclat de manera eficient.
Comandament | Descripció |
---|---|
getSystemService | Recupera un servei a nivell de sistema pel nom; aquí, s'utilitza per obtenir l'InputMethodManager per gestionar el teclat. |
hideSoftInputFromWindow | Oculta el teclat suau de la finestra, prenent un testimoni i marques com a paràmetres. |
getCurrentFocus | Retorna la vista enfocada actual a l'activitat, utilitzada per determinar d'on s'ha d'amagar el teclat. |
onClickListener | Configura una devolució de trucada que s'activa quan es fa clic en una visualització (p. ex., Botó). |
dispatchTouchEvent | Intercepta els esdeveniments de moviment de la pantalla tàctil abans que s'enviïn a la finestra, útil per a la gestió personalitzada del toc. |
windowToken | Retorna un testimoni que identifica de manera única la finestra associada a la vista, necessària per amagar el teclat. |
Entendre com amagar el teclat d'Android
A l'exemple de Java, l'script importa primer les classes necessàries com ara InputMethodManager, View, i EditText. El onCreate El mètode configura el disseny i inicialitza el fitxer EditText i Button. Quan es fa clic al botó, el hideKeyboard s'anomena mètode. Aquest mètode recupera la vista enfocada actual utilitzant getCurrentFocus, i si una vista està enfocada, s'utilitza InputMethodManager per ocultar el teclat programat trucant hideSoftInputFromWindow. Això tanca efectivament el teclat quan es fa clic al botó.
A l'exemple de Kotlin, s'aconsegueix una funcionalitat similar. El guió anul·la el onCreate mètode per configurar la vista de contingut i inicialitzar el fitxer EditText i Button. El botó que fa clic l'oient crida a hideKeyboard mètode. A més, el dispatchTouchEvent s'invalida el mètode per ocultar el teclat quan es toca fora. Aquest mètode comprova si una vista està enfocada i amaga el teclat utilitzant InputMethodManager. Aquests scripts milloren l'experiència de l'usuari gestionant la visibilitat del teclat suau de manera eficient.
Tancant el teclat suau d'Android amb programació
Desenvolupament de Java per a Android
import android.app.Activity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideKeyboard();
}
});
}
private void hideKeyboard() {
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
}
Amaga el teclat en tocar l'exterior
Kotlin per al desenvolupament d'Android
import android.app.Activity
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.Button
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val editText = findViewById<EditText>(R.id.editText)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener { hideKeyboard() }
}
private fun hideKeyboard() {
val view = this.currentFocus
view?.let { v ->
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(v.windowToken, 0)
}
}
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
if (currentFocus != null) {
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)
}
return super.dispatchTouchEvent(ev)
}
}
Tècniques avançades per gestionar el teclat d'Android
Un altre aspecte important de la gestió del teclat suau d'Android és gestionar la seva visibilitat en resposta a diverses interaccions i configuracions dels usuaris. Per exemple, és possible que vulgueu que el teclat aparegui automàticament quan un EditText guanya el focus o per assegurar-se que s'amaga quan es navega entre diferents components de la IU. Això es pot aconseguir utilitzant el InputMethodManager juntament amb les devolució de trucades del cicle de vida, com ara onResume i onPause.
A més, podeu controlar el comportament del teclat ajustant-lo android:windowSoftInputMode atribut al fitxer de manifest de la vostra activitat. Aquest atribut us permet especificar si el teclat ha d'ajustar la disposició de l'activitat o romandre ocult fins que ho sol·liciti explícitament. L'ús d'aquestes configuracions pot millorar significativament l'experiència de l'usuari proporcionant una interfície més intuïtiva i sensible.
Preguntes habituals sobre amagar el teclat d'Android
- Com amago el teclat quan un EditText perd el focus?
- Podeu anul·lar el onFocusChange oient de la EditText i truca InputMethodManager.hideSoftInputFromWindow.
- Puc mostrar automàticament el teclat quan un EditText guanya el focus?
- Sí, utilitza InputMethodManager.showSoftInput en el onFocusChange oient.
- Com puc amagar el teclat en un fragment?
- Anomenada InputMethodManager.hideSoftInputFromWindow en el context de la vista del fragment.
- Què és android:windowSoftInputMode usat per?
- Especifica com interactua el teclat amb la disposició de l'activitat, com ara canviar la mida o romandre ocult.
- Com amago el teclat quan toco fora d'un EditText?
- Anul·lació dispatchTouchEvent a la teva activitat per comprovar si hi ha esdeveniments tàctils fora de EditText.
- Puc forçar el teclat a romandre ocult?
- Sí, per configuració android:windowSoftInputMode a stateHidden al manifest.
- Com puc detectar si el teclat és visible actualment?
- Ús getWindowVisibleDisplayFrame per comparar l'àrea visible de la pantalla amb l'alçada de la vista arrel.
- És possible amagar el teclat de manera programàtica amb un clic de botó?
- Sí, truca InputMethodManager.hideSoftInputFromWindow al botó onClickListener.
Punts clau per amagar el teclat d'Android
En conclusió, la gestió del teclat suau d'Android és crucial per millorar l'experiència de l'usuari a la vostra aplicació. Mitjançant l'ús de InputMethodManager, podeu ocultar o mostrar el teclat amb programació segons les interaccions de l'usuari, com ara els clics als botons o els esdeveniments tàctils. A més, configurar el android:windowSoftInputMode L'atribut del vostre fitxer de manifest us permet controlar el comportament del teclat amb més precisió. La implementació d'aquests mètodes garanteix que la presència del teclat no interfereixi amb la usabilitat de l'aplicació, proporcionant una interfície suau i intuïtiva per als usuaris.