Opzioni e azioni della tastiera
Tipi di tastiera, azioni IME e gestione del focus
Opzioni e azioni della tastiera è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
La tastiera giusta per ogni esigenza
Un modulo ben progettato mostra la tastiera su schermo corretta: cifre per un telefono, un tasto @ per un'email e un pulsante "Avanti" per passare da un campo all'altro. Compose gestisce tutto questo con KeyboardOptions e KeyboardActions.
In questa lezione imposterà i tipi di tastiera e le azioni IME e gestirà il focus tra i campi.
Scegliere il tipo di tastiera
Passi KeyboardOptions a un campo di testo e imposti keyboardType. Il sistema mostrerà quindi una tastiera adatta ai dati.
Valori comuni: Text, Number, Email, Phone, Password.
var email by remember { mutableStateOf("") }
OutlinedTextField(
value = email,
onValueChange = { email = it },
label = { Text("Email") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Email
)
)Una tastiera numerica
Per una quantità o un PIN, usi KeyboardType.Number. Lo combini con un filtro dell'input, così verranno accettate solo le cifre, come ha imparato nella lezione sulla convalida.
var pin by remember { mutableStateOf("") }
OutlinedTextField(
value = pin,
onValueChange = { pin = it.filter { c -> c.isDigit() } },
label = { Text("PIN") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
)
)Nascondere una password
Le password devono essere mascherate. Usi visualTransformation = PasswordVisualTransformation() insieme al tipo di tastiera per le password.
Lo stato conserva comunque i caratteri reali; solo la visualizzazione viene mascherata.
var password by remember { mutableStateOf("") }
OutlinedTextField(
value = password,
onValueChange = { password = it },
label = { Text("Password") },
visualTransformation = PasswordVisualTransformation(),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Password
)
)Il pulsante di azione IME
Il tasto nell'angolo in basso a destra della tastiera è l'azione IME. Lo imposti con imeAction. Usi Next per passare al campo successivo e Done nell'ultimo campo.
OutlinedTextField(
value = name,
onValueChange = { name = it },
label = { Text("Name") },
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Next
)
)Rispondere alle azioni IME
Per reagire quando l'utente tocca quel pulsante, passi KeyboardActions. Ogni azione (onNext, onDone, onSearch) è una lambda da implementare.
Qui la pressione di Done nasconde la tastiera.
val keyboard = LocalSoftwareKeyboardController.current
OutlinedTextField(
value = text,
onValueChange = { text = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { keyboard?.hide() }
)
)Spostare il focus al campo successivo
In un modulo con più campi, il pulsante Avanti dovrebbe portare al campo successivo. Usi LocalFocusManager e chiami moveFocus.
val focusManager = LocalFocusManager.current
OutlinedTextField(
value = email,
onValueChange = { email = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(
onNext = { focusManager.moveFocus(FocusDirection.Down) }
)
)Cancellare il focus con Done
Nell'ultimo campo, cancellare il focus chiude la tastiera e deseleziona il campo. Chiami focusManager.clearFocus() all'interno di onDone.
OutlinedTextField(
value = password,
onValueChange = { password = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusManager.clearFocus() }
)
)Richiedere il focus a livello programmatico
A volte è utile mettere a fuoco un campo non appena appare la schermata, ad esempio una casella di ricerca. Colleghi un FocusRequester e richieda il focus in un LaunchedEffect.
val focusRequester = remember { FocusRequester() }
LaunchedEffect(Unit) { focusRequester.requestFocus() }
OutlinedTextField(
value = query,
onValueChange = { query = it },
modifier = Modifier.focusRequester(focusRequester),
label = { Text("Search") }
)Maiuscole e correzione automatica
KeyboardOptions controlla anche capitalization e autoCorrectEnabled. Scriva in maiuscolo ogni parola per un nome oppure disattivi la correzione automatica per un nome utente, così non verrà modificato in modo indesiderato.
OutlinedTextField(
value = fullName,
onValueChange = { fullName = it },
label = { Text("Full name") },
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.Words,
autoCorrectEnabled = false
)
)Kotlin puro: scegliere un'azione IME
La logica "Next per ogni campo tranne l'ultimo, Done per l'ultimo" è semplice Kotlin. Qui associamo le posizioni dei campi all'etichetta dell'azione che dovrebbero mostrare.
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)}")
}
}Verifica rapida
Vuole che il pulsante nell'angolo in basso a destra della tastiera mostri "Next" e che, quando viene toccato, sposti il focus al campo sottostante. Quali due elementi le servono?
Riepilogo
Ora sa creare moduli che gestiscono correttamente la tastiera:
KeyboardOptionsimpostakeyboardType,imeAction, maiuscole e correzione automatica.- Mascheri le password con
PasswordVisualTransformation. KeyboardActionsgestisce le azioni Next/Done/Search.LocalFocusManagersposta o cancella il focus;FocusRequestermette a fuoco un campo su richiesta.
Con questo si completa il kit per creare moduli: input, stato, convalida e tastiera. Ora è pronto per creare moduli Compose curati e intuitivi.
Impara Kotlin con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 36
- Lezioni
- 152
Domande Frequenti
La lezione «Opzioni e azioni della tastiera» è gratuita?
Sì — il testo completo di «Opzioni e azioni della tastiera» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «Opzioni e azioni della tastiera»?
Tipi di tastiera, azioni IME e gestione del focus Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Opzioni e azioni della tastiera»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- TextField e input dell'utente
- Gestire lo stato dei moduli
- Convalidare l'input
- Opzioni e azioni della tastiera