Introduktion til at skjule Android-tastatur
Når du udvikler Android-applikationer, er der tidspunkter, hvor du har brug for at gemme det bløde tastatur programmæssigt. Dette er især nyttigt, når du har en EditText og en knap i dit layout og ønsker, at tastaturet skal forsvinde efter at have klikket på knappen.
I denne guide vil vi udforske enkle og effektive måder at opnå denne funktionalitet på. Ved at følge de angivne trin vil du være i stand til at forbedre brugeroplevelsen af din app ved at administrere tastaturets synlighed effektivt.
Kommando | Beskrivelse |
---|---|
getSystemService | Henter en tjeneste på systemniveau ved navn; her bruges den til at få InputMethodManager til at styre tastaturet. |
hideSoftInputFromWindow | Skjuler det bløde tastatur fra vinduet, tager et token og markerer som parametre. |
getCurrentFocus | Returnerer den aktuelle fokuserede visning i aktiviteten, der bruges til at bestemme, hvor tastaturet skal gemme sig fra. |
onClickListener | Opretter et tilbagekald, der udløses, når der klikkes på en visning (f.eks. knap). |
dispatchTouchEvent | Opsnapper berøringsskærmbevægelseshændelser, før de sendes til vinduet, nyttigt til brugerdefineret berøringshåndtering. |
windowToken | Returnerer et token, der entydigt identificerer det vindue, der er knyttet til visningen, som kræves for at skjule tastaturet. |
Forstå, hvordan du skjuler Android-tastaturet
I Java-eksemplet importerer scriptet først nødvendige klasser som f.eks InputMethodManager, View, og EditText. Det onCreate metoden opsætter layoutet og initialiserer EditText og Button. Når der trykkes på knappen, vises hideKeyboard metode kaldes. Denne metode henter den aktuelle fokuserede visning vha getCurrentFocus, og hvis en visning er fokuseret, bruger den InputMethodManager for at skjule det bløde tastatur ved at ringe hideSoftInputFromWindow. Dette lukker effektivt tastaturet, når der trykkes på knappen.
I Kotlin-eksemplet opnås lignende funktionalitet. Scriptet tilsidesætter onCreate metode til at indstille indholdsvisningen og initialisere EditText og Button. Knappen klik lytteren kalder hideKeyboard metode. Derudover dispatchTouchEvent metode tilsidesættes for at skjule tastaturet, når du rører udenfor. Denne metode kontrollerer, om en visning er fokuseret og skjuler tastaturet ved hjælp af InputMethodManager. Disse scripts forbedrer brugeroplevelsen ved at administrere synligheden af det bløde tastatur effektivt.
Programmatisk lukning af Android Soft Keyboard
Java til Android udvikling
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);
}
}
}
Skjul tastaturet ved berøring udenfor
Kotlin til Android-udvikling
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)
}
}
Avancerede teknikker til styring af Android-tastatur
Et andet vigtigt aspekt ved styring af det bløde Android-tastatur er at håndtere dets synlighed som svar på forskellige brugerinteraktioner og konfigurationer. For eksempel vil du måske have, at tastaturet automatisk vises, når en EditText får fokus eller for at sikre, at den skjuler sig, når du navigerer mellem forskellige UI-komponenter. Dette kan opnås ved hjælp af InputMethodManager sammen med livscyklustilbagekald som f.eks onResume og onPause.
Desuden kan du styre tastaturets adfærd ved at justere android:windowSoftInputMode attribut i din aktivitets manifestfil. Denne egenskab giver dig mulighed for at angive, om tastaturet skal justere layoutet af aktiviteten eller forblive skjult, indtil det udtrykkeligt anmodes om det. Brug af disse konfigurationer kan forbedre brugeroplevelsen markant ved at give en mere intuitiv og responsiv grænseflade.
Almindelige spørgsmål om at skjule Android-tastaturet
- Hvordan skjuler jeg tastaturet, når en EditText mister fokus?
- Du kan tilsidesætte onFocusChange lytter af EditText og ring InputMethodManager.hideSoftInputFromWindow.
- Kan jeg automatisk vise tastaturet, når en EditText får fokus?
- Ja, brug InputMethodManager.showSoftInput i onFocusChange lytter.
- Hvordan kan jeg skjule tastaturet i et fragment?
- Opkald InputMethodManager.hideSoftInputFromWindow i fragmentets synspunkts sammenhæng.
- Hvad er android:windowSoftInputMode anvendes til?
- Det specificerer, hvordan tastaturet interagerer med aktivitetens layout, såsom at ændre størrelse eller forblive skjult.
- Hvordan skjuler jeg tastaturet, når jeg rører uden for en EditText?
- Tilsidesæt dispatchTouchEvent i din aktivitet for at tjekke for berøringshændelser uden for EditText.
- Kan jeg tvinge tastaturet til at forblive skjult?
- Ja, ved at indstille android:windowSoftInputMode til stateHidden i manifestet.
- Hvordan finder jeg ud af, om tastaturet er synligt i øjeblikket?
- Brug getWindowVisibleDisplayFrame for at sammenligne det synlige område af skærmen med rodvisningens højde.
- Er det muligt at skjule tastaturet programmatisk ved et klik på en knap?
- Ja, ring InputMethodManager.hideSoftInputFromWindow i knappens onClickListener.
Nøglemuligheder til at skjule Android-tastaturet
Afslutningsvis er administration af det bløde Android-tastatur afgørende for at forbedre brugeroplevelsen i din applikation. Ved hjælp af InputMethodManager, kan du programmæssigt skjule eller vise tastaturet baseret på brugerinteraktioner såsom knapklik eller berøringshændelser. Derudover konfigurerer du android:windowSoftInputMode attribut i din manifestfil giver dig mulighed for at kontrollere tastaturets adfærd mere præcist. Implementering af disse metoder sikrer, at tastaturets tilstedeværelse ikke forstyrrer appens anvendelighed, hvilket giver en smidig og intuitiv grænseflade for brugerne.