Android Academy · Lektion

Tastaturindstillinger og handlinger

Tastaturtyper, IME-handlinger og fokus.

Lektion 4 af 413 trin

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:

  • KeyboardOptions indstiller keyboardType, imeAction, store begyndelsesbogstaver og autokorrektion.
  • Maskér adgangskoder med PasswordVisualTransformation.
  • KeyboardActions reagerer på Næste, Done og Søg.
  • LocalFocusManager flytter eller rydder fokus; FocusRequester giver 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.

Gratis at komme i gang

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

  1. TextField og brugerinput
  2. Håndtering af formularstate
  3. Validering af input
  4. Tastaturindstillinger og handlinger
← Tilbage til Android Academy