Keyboard Type — is de configuratie van het virtuele toetsenbord in Android, die de set weergegeven tekens en lay-out voor een specifiek invoerveld bepaalt. Android ondersteunt vele vooraf ingestelde typen: text (standaard tekst), number (numeriek), phone (telefoon), email (met @-teken), textPassword (voor wachtwoorden), datetime en andere. Elk type optimaliseert de invoerinterface voor een specifieke taak — bijvoorbeeld het email-toetsenbord toont het @-teken en de punt op het hoofdscherm. Volgens Android Developers (2026) vermindert de juiste keuze van Keyboard Type het aantal toetsaanslagen bij invoer met 20–40% in vergelijking met het standaard teksttoetsenbord.
Belangrijkste punten
Keyboard Type wordt bepaald door de waarde van het attribuut android:inputType in XML of door de programmatische aanroep setInputType() in code. InputType is een bitmasker, waarbij de invoerklasse (klasse) wordt gecombineerd met modificatorvlaggen. Basisklassen: TYPE_CLASS_TEXT voor tekst, TYPE_CLASS_NUMBER voor getallen, TYPE_CLASS_PHONE voor telefoons, TYPE_CLASS_DATETIME voor datums en tijden.
Elk Keyboard Type beïnvloedt drie aspecten: de lay-out van het virtuele toetsenbord (welke tekens zichtbaar zijn op het hoofdscherm), filtering van ingevoerde tekens (welke tekens zijn toegestaan) en het gedrag van autocorrectie/automatisch aanvullen. Het number-toetsenbord toont bijvoorbeeld alleen cijfers en de decimale scheidingsteken, en toont geen letters, zelfs niet als de gebruiker van modus wisselt. Volgens Android Developers Documentation (2026) maakt het combineren van klassen met vlaggen het mogelijk zeer gespecialiseerde modi te creëren: multiline-tekst met autocorrectie, getal met drijvende komma, wachtwoord met de mogelijkheid tot automatisch aanvullen.
Het is belangrijk te begrijpen dat Keyboard Type een aanbeveling is voor het invoersysteem (IME). Sommige toetsenborden van derden (Gboard, SwiftKey) kunnen het opgegeven type gedeeltelijk negeren als de gebruiker eigen voorkeuren heeft geconfigureerd. De meeste standaard Android-toetsenborden en Google Gboard volgen echter strikt het opgegeven invoertype.
// Programmatische configuratie van toetsenbordtype
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT — de basisklasse voor tekstinvoer. Activeert het standaard QWERTY-toetsenbord met letters, cijfers en symbolen. De klasse Text heeft het grootste aantal modificatoren die het gedrag verfijnen: TYPE_TEXT_FLAG_CAP_SENTENCES (automatische hoofdletter aan het begin van een zin), TYPE_TEXT_FLAG_AUTO_CORRECT (autocorrectie), TYPE_TEXT_FLAG_MULTI_LINE (multilinemodus), TYPE_TEXT_FLAG_NO_SUGGESTIONS (uitschakelen van suggesties).
Modificatoren van het teksttoetsenbord kunnen worden gecombineerd om een nauwkeurige configuratie te creëren: bijvoorbeeld text|textCapSentences|textAutoCorrect is geschikt voor een opmerkingeninvoerveld waar automatische hoofdletter en correctie van typefouten nodig zijn. Terwijl text|textNoSuggesties wordt gebruikt voor het invoeren van code of speciale termen, waar autocorrectie schadelijk kan zijn.
Volgens UX Stack Exchange (2025) versnelt een teksttoetsenbord met ingeschakelde autocorrectie de invoer met 15–25% voor de gemiddelde gebruiker, maar voor technische termen (code, URL, email) wordt aanbevolen autocorrectie uit te schakelen, omdat het vaak correcte termen vervangt door onjuiste.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER activeert het numerieke toetsenbord, dat alleen cijfers, de decimale scheidingsteken en het minteken toont. Dit type wordt gebruikt voor invoervelden voor hoeveelheid, prijzen, leeftijd, codes en andere numerieke gegevens. Het numerieke toetsenbord neemt minder ruimte in op het scherm dan het teksttoetsenbord en voorkomt per ongeluk invoeren van letters.
Number heeft drie modificatoren: TYPE_NUMBER_FLAG_DECIMAL voegt de decimale punt/komma toe, TYPE_NUMBER_FLAG_SIGNED voegt het minteken toe voor negatieve getallen, TYPE_NUMBER_VARIATION_PASSWORD — voor PIN-codes, waar cijfers worden weergegeven als verborgen symbolen. De combinatie number|numberDecimal|numberSigned creëert een volledig veld voor het invoeren van getallen met drijvende komma van elk teken.
// Numerieke invoer met decimaal scheidingsteken
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Gecontroleerd ingevoerd getal
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE activeert het telefoontoetsenbord, dat cijfers en symbolen toont die kenmerkend zijn voor telefoonnummers: +, #, *, (, ). In tegenstelling tot het number-toetsenbord toont phone ook de letterlay-out in een extra modus, omdat telefoonnummers letters kunnen bevatten (bijvoorbeeld 1-800-FLOWERS). De klasse phone heeft geen extra vlaggen, maar ondersteunt TYPE_TEXT_VARIATION_PHONE_ETC voor het invoeren van interne nummers.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS activeert het email-toetsenbord, waarop het @-teken en de punt zich op het hoofdscherm bevinden, en veelgebruikte domeinextensies (.com, .net, .org) zijn beschikbaar. Gboard toont extra knoppen met populaire domeinen bij het invoeren na @. Het email-toetsenbord schakelt automatisch autocorrectie uit, omdat emailadressen niet-standaard combinaties van tekens kunnen bevatten.
Volgens Google Material Design Guidelines (2025) wordt voor telefoonvelden aanbevolen ook het attribuut android:digits op te geven, dat de set toegestane tekens beperkt. Voor emailvelden is het ook belangrijk om autofillHints="email" op te geven voor ondersteuning van automatisch aanvullen door de wachtwoordbeheerder en Google Autofill.
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"
<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"
TYPE_TEXT_VARIATION_PASSWORD en TYPE_NUMBER_VARIATION_PASSWORD — zijn invoermodi voor vertrouwelijke gegevens. Bij het instellen van textPassword worden ingevoerde tekens weergegeven als punten of sterretjes (afhankelijk van de Android-versie en het toetsenbord). Het toetsenbord schakelt in deze modus autocorrectie en het opslaan van ingevoerde woorden in het gebruikerswoordenboek uit, waardoor lekkage van het wachtwoord via voorspellende invoerfuncties wordt voorkomen.
Password toetsenbord schakelt ook de mogelijkheid uit om een screenshot van de veldinhoud te maken (vlag FLAG_SECURE), hoewel dit gedrag afhangt van de implementatie van het specifieke toetsenbord. Vanaf Android 8.0 (API 26) ondersteunen wachtwoordtoetsenborden automatisch aanvullen via wachtwoordbeheerders, als het attribuut importantForAutofill="yes" is ingesteld.
Volgens Android Security Recommendations (2025) wordt voor wachtwoordvelden ook aanbevolen: maxLength instellen om zeer lange wachtwoorden te voorkomen (die een aanval op de database kunnen zijn), gebruik van inputType="textPassword" samen met TextInputLayout en endIconMode="password_toggle", zodat de gebruiker het ingevoerde wachtwoord kan controleren voordat het formulier wordt verzonden.
<!-- 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>
Programmatische configuratie van Keyboard Type maakt het mogelijk de toetsenbordmodus dynamisch te wijzigen afhankelijk van de context of gebruikersinvoer. Bijvoorbeeld bij het wijzigen van het veldtype (tekst/getal/datum) of bij het wijzigen van de locale. De methode setInputType() accepteert een bitmasker InputType en werkt het toetsenbord onmiddellijk bij als het veld in focus is.
// Schakelen tussen tekst en numerieke invoer
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)
}
// Controleer of veld numeriek is
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Controleer of autocorrectie is ingeschakeld
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Veelgestelde vragen
Als inputType niet is opgegeven, gebruikt EditText standaard TYPE_CLASS_TEXT met de vlag TYPE_TEXT_FLAG_MULTI_LINE. Dit betekent een standaard QWERTY-toetsenbord en multiline-invoer. Voor de meeste velden wordt aanbevolen inputType expliciet op te geven om correct toetsenbordgedrag en filtering van tekens te garanderen.
Gebruik het attribuut android:imeOptions="actionDone" op EditText. Dit vervangt de Enter-knop door een Done-knop. Andere opties: actionSearch (vergrootglas), actionNext (pijl rechts), actionSend (verzenden). Implementeer de afhandeling van het indrukken via OnEditorActionListener in code.
U kunt de trilling niet uitschakelen voor een specifiek veld — dit is een systeeminstelling die door de gebruiker wordt beheerd in de toetsenbordinstellingen. U kunt echter volledig voorkomen dat het toetsenbord verschijnt door op EditText het attribuut android:focusable="false" in te stellen of de weergave te annuleren via dispatchTouchEvent.
Stel android:inputType="none" in of roep programmatisch editText.setKeyListener(null) aan. Het veld toont de tekst, maar het toetsenbord verschijnt niet bij focus. De gebruiker kan de tekst selecteren en kopiëren, maar niet wijzigen. Alternatief — gebruik TextView met textIsSelectable="true".
Na het aanroepen van setInputType() moet u het toetsenbord opnieuw tonen, omdat het systeem de IME mogelijk niet automatisch bijwerkt. Roep InputMethodManager.restartInput(view) aan voor een geforceerde update. Als het veld niet in focus is, roep dan eerst requestFocus() aan en vervolgens restartInput.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook