Keyboard Type — cos’è, tipi di tastiera e configurazione dell’input in Android

Autore: IT Sectr Pubblicato: 2026-07-07 Tempo di lettura: 9 min

Keyboard Type è una configurazione della tastiera virtuale in Android che definisce l’insieme di caratteri visualizzati e il layout per un campo di input specifico. Android supporta molti tipi preimpostati: text (testo standard), number (numerico), phone (telefonico), email (con simbolo @), textPassword (per password), datetime e altri. Ogni tipo ottimizza l’interfaccia di input per un compito specifico — ad esempio, la tastiera email mostra il simbolo @ e il punto sulla schermata principale. Secondo Android Developers (2026), scegliere il Keyboard Type corretto riduce il numero di battute del 20–40% rispetto a una tastiera di testo standard.

Punti Chiave

  • Keyboard Type — modalità tastiera definita dall’attributo android:inputType in Android.
  • Tipi principali — text, number, phone, email, textPassword, datetime per diversi scenari di input.
  • Ottimizzazione input — il tipo di tastiera corretto velocizza la compilazione dei moduli del 20–40%.
  • Combinazione flag — inputType combina classe di input e modificatori (multiline, correzione automatica).
  • Opzioni IME — l’attributo imeOptions controlla il pulsante di azione sulla tastiera (Done, Search, Next).

Cos’è Keyboard Type in Android

Keyboard Type è determinato dal valore dell’attributo android:inputType in XML o da una chiamata programmatica a setInputType() nel codice. InputType è una maschera di bit dove la classe di input è combinata con flag modificatori. Le classi base sono: TYPE_CLASS_TEXT per il testo, TYPE_CLASS_NUMBER per i numeri, TYPE_CLASS_PHONE per i telefoni, TYPE_CLASS_DATETIME per date e ore.

Ogni Keyboard Type influisce su tre aspetti: il layout della tastiera virtuale (quali caratteri sono visibili sulla schermata principale), il filtraggio dei caratteri inseriti (quali caratteri sono consentiti) e il comportamento di correzione automatica/autocompletamento. Ad esempio, la tastiera numerica mostra solo cifre e il separatore decimale, e non mostra lettere anche se l’utente cambia maiuscole/minuscole. Secondo Android Developers Documentation (2026), combinare classi con flag consente di creare modalità altamente specializzate: testo multiline con correzione automatica, numero a virgola mobile, password con supporto autocompilazione.

È importante capire che Keyboard Type è una raccomandazione per il sistema di input (IME). Alcune tastiere di terze parti (Gboard, SwiftKey) possono ignorare parzialmente il tipo specificato se l’utente ha impostato le proprie preferenze. Tuttavia, la maggior parte delle tastiere Android standard e Google Gboard seguono rigorosamente il tipo di input specificato.

kotlin
// Configurazione programmatica del tipo di tastiera
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL or
    InputType.TYPE_NUMBER_FLAG_SIGNED

Text — tastiera di testo standard

TYPE_CLASS_TEXT è la classe base per l’input di testo. Attiva la tastiera QWERTY standard con lettere, cifre e simboli. La classe testo ha il maggior numero di modificatori che perfezionano il comportamento: TYPE_TEXT_FLAG_CAP_SENTENCES (lettera maiuscola automatica all’inizio di una frase), TYPE_TEXT_FLAG_AUTO_CORRECT (correzione automatica), TYPE_TEXT_FLAG_MULTI_LINE (modalità multiline), TYPE_TEXT_FLAG_NO_SUGGESTIONS (disabilitare suggerimenti).

I modificatori della tastiera di testo possono essere combinati per creare configurazioni precise: ad esempio, text|textCapSentences|textAutoCorrect è adatto per un campo di input commenti dove sono necessarie la maiuscola automatica e la correzione degli errori di battitura. text|textNoSuggestions viene utilizzato per l’inserimento di codice o termini speciali dove la correzione automatica potrebbe essere dannosa.

Secondo UX Stack Exchange (2025), una tastiera di testo con correzione automatica attivata accelera la digitazione del 15–25% per l’utente medio, ma per termini tecnici (codice, URL, email) si consiglia di disabilitare la correzione automatica poiché spesso sostituisce termini corretti con termini errati.

xml
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"

<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"

Number — tastiera numerica

TYPE_CLASS_NUMBER attiva la tastiera numerica, che mostra solo cifre, il separatore decimale e il segno meno. Questo tipo viene utilizzato per campi di input di quantità, prezzi, età, codici e altri dati numerici. La tastiera numerica occupa meno spazio sullo schermo rispetto a una tastiera di testo ed elimina l’inserimento accidentale di lettere.

Number ha tre modificatori: TYPE_NUMBER_FLAG_DECIMAL aggiunge un punto/virgola decimale, TYPE_NUMBER_FLAG_SIGNED aggiunge un segno meno per i numeri negativi, TYPE_NUMBER_VARIATION_PASSWORD — per i codici PIN dove le cifre vengono visualizzate come caratteri nascosti. La combinazione number|numberDecimal|numberSigned crea un campo completo per l’inserimento di numeri a virgola mobile di qualsiasi segno.

  • number — interi positivi (età, quantità di prodotti).
  • numberDecimal — numeri con parte decimale (prezzi, peso, altezza).
  • numberSigned — numeri con segno (temperatura, coordinate).
  • numberPassword — input nascosto di cifre per codici PIN.
kotlin
// Input numerico con punto decimale
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Verificare il numero inserito
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0

Phone e Email — tastiere specializzate

TYPE_CLASS_PHONE attiva la tastiera telefonica, che mostra cifre e caratteri tipici dei numeri di telefono: +, #, *, (, ). A differenza della tastiera numerica, phone mostra anche un layout di lettere in una modalità aggiuntiva, poiché i numeri di telefono possono contenere lettere (ad esempio, 1-800-FLOWERS). La classe phone non ha flag aggiuntivi ma supporta TYPE_TEXT_VARIATION_PHONE_ETC per l’inserimento di numeri interni.

TYPE_TEXT_VARIATION_EMAIL_ADDRESS attiva la tastiera email, dove il simbolo @ e il punto si trovano sulla schermata principale, e sono disponibili anche le estensioni di dominio comuni (.com, .net, .org). Gboard mostra inoltre pulsanti con domini popolari durante la digitazione dopo @. La tastiera email disabilita automaticamente la correzione automatica poiché gli indirizzi email possono contenere combinazioni di caratteri non standard.

Secondo Google Material Design Guidelines (2025), per i campi telefonici si raccomanda inoltre di specificare l’attributo android:digits, che limita l’insieme dei caratteri consentiti. Per i campi email, è anche importante specificare autofillHints="email" per supportare l’autocompilazione da gestori di password e Google Autofill.

xml
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"

<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"

Password — tastiera per password

TYPE_TEXT_VARIATION_PASSWORD e TYPE_NUMBER_VARIATION_PASSWORD sono modalità di input per dati sensibili. Quando si imposta textPassword, i caratteri inseriti vengono visualizzati come punti o asterischi (a seconda della versione di Android e della tastiera). La tastiera in questa modalità disabilita la correzione automatica e il salvataggio delle parole inserite nel dizionario dell’utente, prevenendo la fuga di password attraverso le funzioni di input predittivo.

La tastiera Password disabilita anche la possibilità di fare screenshot del contenuto del campo (flag FLAG_SECURE), sebbene questo comportamento dipenda dall’implementazione specifica della tastiera. A partire da Android 8.0 (API 26), le tastiere per password supportano l’autocompilazione tramite gestori di password se è impostato l’attributo importantForAutofill="yes".

Secondo Android Security Recommendations (2025), per i campi password si raccomanda anche di: impostare maxLength per evitare password molto lunghe (che potrebbero essere un vettore di attacco al database), utilizzare inputType="textPassword" insieme a TextInputLayout e endIconMode="password_toggle" in modo che l’utente possa verificare la password inserita prima di inviare il modulo.

xml
<!-- Password field with show/hide icon -->
@+id/tilPasswordField
app:endIconMode="password_toggle">

    @+id/etPasswordField
    android:inputType="textPassword"
    android:maxLength="64"
    android:importantForAutofill="yes" />

</com.google.android.material.textfield.TextInputLayout>

Configurare Keyboard Type nel codice

La configurazione programmatica di Keyboard Type consente di cambiare dinamicamente la modalità della tastiera in base al contesto o all’input dell’utente. Ad esempio, quando si cambia il tipo di campo (testo/numero/data) o quando si cambia la locale. Il metodo setInputType() accetta una maschera di bit InputType e aggiorna immediatamente la tastiera se il campo è in focus.

Cambio dinamico del tipo

kotlin
// Passare da input testo a input numerico
fun switchInputType(field: EditText, isNumeric: Boolean) {
    field.inputType = if (isNumeric) {
        InputType.TYPE_CLASS_NUMBER or
            InputType.TYPE_NUMBER_FLAG_DECIMAL
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
    }
    field.setSelection(field.text.length)
}

Verificare il tipo corrente

kotlin
// Verificare se il campo è numerico
fun isNumericInput(field: EditText): Boolean {
    val type = field.inputType
    return (type and InputType.TYPE_MASK_CLASS) ==
        InputType.TYPE_CLASS_NUMBER
}

// Verificare se la correzione automatica è attivata
fun isAutoCorrectEnabled(field: EditText): Boolean {
    return (field.inputType and
        InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}

Domande Frequenti

Cosa succede se Keyboard Type non viene specificato?

Se inputType non viene specificato, EditText utilizza per impostazione predefinita TYPE_CLASS_TEXT con il flag TYPE_TEXT_FLAG_MULTI_LINE. Ciò significa una tastiera QWERTY standard e input multiline. Per la maggior parte dei campi, si consiglia di specificare esplicitamente inputType per garantire un corretto comportamento della tastiera e il filtraggio dei caratteri.

Come creare una tastiera con il pulsante "Fine" invece di "Invio"?

Utilizza l’attributo android:imeOptions="actionDone" su EditText. Ciò sostituirà il pulsante Invio con un pulsante Fine. Altre opzioni: actionSearch (lente d’ingrandimento), actionNext (freccia destra), actionSend (invia). Gestisci la pressione tramite OnEditorActionListener nel codice.

Si può disabilitare la vibrazione della tastiera per un campo specifico?

Non è possibile disabilitare la vibrazione per un campo specifico — è un’impostazione di sistema controllata dall’utente nelle impostazioni della tastiera. Tuttavia, è possibile impedire completamente la comparsa della tastiera impostando l’attributo android:focusable="false" su EditText o sovrascrivendo la visualizzazione tramite dispatchTouchEvent.

Come creare un campo di sola lettura con possibilità di copiare il testo?

Imposta android:inputType="none" o chiama programmaticamente editText.setKeyListener(null). Il campo visualizzerà il testo, ma la tastiera non apparirà al focus. L’utente potrà selezionare e copiare il testo, ma non modificarlo. Un’alternativa è utilizzare TextView con textIsSelectable="true".

Perché la tastiera non cambia dopo setInputType()?

Dopo aver chiamato setInputType(), è necessario mostrare nuovamente la tastiera, poiché il sistema potrebbe non aggiornare automaticamente l’IME. Chiama InputMethodManager.restartInput(view) per forzare un aggiornamento. Se il campo non è in focus, chiama prima requestFocus(), poi restartInput.

Riepilogo

  • Keyboard Type definisce il layout, il filtraggio e il comportamento della tastiera per un campo di input Android.
  • text — tastiera QWERTY standard con modificatori per correzione automatica, capitalizzazione e multiline.
  • number — tastiera numerica per interi e decimali con opzioni signed e decimal.
  • phone — tastiera telefonica con cifre, +, #, * e supporto per numeri alfanumerici.
  • email — tastiera con @, punto e accesso rapido alle estensioni di dominio.
  • textPassword — input nascosto con correzione automatica e salvataggio nel dizionario disabilitati.
  • imeOptions configura il pulsante di azione sulla tastiera: Done, Search, Next, Send.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche