Tastaturindstillinger og handlinger
Tastaturtyper, IME-handlinger og fokus.
Tastaturindstillinger og handlinger er en gratis Android Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Android Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Android Academy-kurset indeholder 4 lektioner i alt.
Det rigtige tastatur til opgaven
En gennemarbejdet formular viser det rigtige skærmtastatur: cifre til et telefonnummer, en @-tast til e-mail og en »Næste«-knap til at flytte mellem felter. Compose styrer alt dette med KeyboardOptions og KeyboardActions.
I denne lektion indstiller du tastaturtyper og IME-handlinger og håndterer fokus mellem felter.
Valg af tastaturtype
Giv et tekstfelt KeyboardOptions, og indstil keyboardType. Derefter viser systemet et tastatur, der passer til dataene.
Almindelige værdier: Text, Number, Email, Phone, Password.
var email by remember { mutableStateOf("") }
OutlinedTextField(
value = email,
onValueChange = { email = it },
label = { Text("Email") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Email
)
)Et numerisk tastatur
Til en mængde eller en PIN-kode skal du bruge KeyboardType.Number. Kombiner det med inputfiltrering, så kun cifre accepteres, som du lærte i lektionen om validering.
var pin by remember { mutableStateOf("") }
OutlinedTextField(
value = pin,
onValueChange = { pin = it.filter { c -> c.isDigit() } },
label = { Text("PIN") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
)
)Skjul en adgangskode
Adgangskoder bør maskeres. Brug visualTransformation = PasswordVisualTransformation() sammen med adgangskodens tastaturtype.
Tilstanden indeholder stadig de rigtige tegn; kun visningen er maskeret.
var password by remember { mutableStateOf("") }
OutlinedTextField(
value = password,
onValueChange = { password = it },
label = { Text("Password") },
visualTransformation = PasswordVisualTransformation(),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Password
)
)IME-handlingsknappen
Tasten nederst til højre på tastaturet er IME-handlingen. Indstil den med imeAction. Brug Next til at gå videre til det næste felt og Done i det sidste felt.
OutlinedTextField(
value = name,
onValueChange = { name = it },
label = { Text("Name") },
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Next
)
)Reaktion på IME-handlinger
Hvis du vil reagere, når brugeren trykker på knappen, skal du angive KeyboardActions. Hver handling (onNext, onDone, onSearch) er en lambda, som du implementerer.
Her skjuler et tryk på Done tastaturet.
val keyboard = LocalSoftwareKeyboardController.current
OutlinedTextField(
value = text,
onValueChange = { text = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { keyboard?.hide() }
)
)Flyt fokus til det næste felt
I en formular med flere felter skal knappen Næste springe til det følgende felt. Brug LocalFocusManager, og kald moveFocus.
val focusManager = LocalFocusManager.current
OutlinedTextField(
value = email,
onValueChange = { email = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(
onNext = { focusManager.moveFocus(FocusDirection.Down) }
)
)Ryd fokus ved tryk på Done
I det sidste felt lukker rydning af fokus tastaturet og fjerner markeringen af feltet. Kald focusManager.clearFocus() i onDone.
OutlinedTextField(
value = password,
onValueChange = { password = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusManager.clearFocus() }
)
)Anmod programmatisk om fokus
Nogle gange vil du have fokus på et felt, så snart skærmbilledet vises, f.eks. et søgefelt. Tilknyt en FocusRequester, og anmod om fokus i en LaunchedEffect.
val focusRequester = remember { FocusRequester() }
LaunchedEffect(Unit) { focusRequester.requestFocus() }
OutlinedTextField(
value = query,
onValueChange = { query = it },
modifier = Modifier.focusRequester(focusRequester),
label = { Text("Search") }
)Versaler og autokorrektion
KeyboardOptions styrer også capitalization og autoCorrectEnabled. Sæt hvert ord i et navn med stort begyndelsesbogstav, eller slå autokorrektion fra for et brugernavn, så det ikke bliver ændret forkert.
OutlinedTextField(
value = fullName,
onValueChange = { fullName = it },
label = { Text("Full name") },
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.Words,
autoCorrectEnabled = false
)
)Ren Kotlin: Valg af en IME-handling
Logikken »Næste for hvert felt undtagen det sidste, Done for det sidste« er almindelig Kotlin. Her knytter vi feltpositioner til den handlingsetiket, de skal vise.
fun imeActionFor(index: Int, lastIndex: Int): String =
if (index == lastIndex) "Done" else "Next"
fun main() {
val fields = listOf("name", "email", "password")
fields.forEachIndexed { i, field ->
println("$field -> ${imeActionFor(i, fields.lastIndex)}")
}
}Hurtigt tjek
Du vil have, at tastaturets knap nederst til højre viser »Næste« og ved tryk flytter fokus til feltet nedenunder. Hvilke to dele har du brug for?
Opsummering
Du kan nu bygge formularer, der fungerer godt sammen med tastaturet:
KeyboardOptionsindstillerkeyboardType,imeAction, store begyndelsesbogstaver og autokorrektion.- Maskér adgangskoder med
PasswordVisualTransformation. KeyboardActionsreagerer på Næste, Done og Søg.LocalFocusManagerflytter eller rydder fokus;FocusRequestergiver et felt fokus efter behov.
Det fuldender værktøjskassen til formularer: input, tilstand, validering og tastaturet. Du er klar til at bygge gennemarbejdede og brugervenlige Compose-formularer.
Lær Kotlin med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 36
- Lektioner
- 152
Ofte stillede spørgsmål
Er lektionen “Tastaturindstillinger og handlinger” gratis?
Ja — alle 3 lektioner i læringssporet Android Academy, inklusive “Tastaturindstillinger og handlinger”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Android Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Tastaturindstillinger og handlinger”?
Tastaturtyper, IME-handlinger og fokus. Du øver dig i Android Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Android Academy?
Der kræves ingen tidligere erfaring. Android Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Tastaturindstillinger og handlinger”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Android Academy-lektion?
Ja. Alle Android Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- TextField og brugerinput
- Håndtering af formularstate
- Validering af input
- Tastaturindstillinger og handlinger