InputType — wat is het, invoerattributen en hun configuratie in Android

Auteur: IT Sectr Gepubliceerd: 2026-07-07 Leestijd: 9 min

InputType — is een Android-attribuut dat de aard van ingevoerde gegevens en het toetsenbordgedrag voor tekstvelden bepaalt. De waarde InputType vertegenwoordigt een bitmasker dat de invoerklasse (tekst, nummer, telefoon, datum) en modificatoren (meerregelig, automatisch corrigeren, hoofdletters, verborgen invoer) combineert. InputType beïnvloedt het type weergegeven toetsenbord, het filteren van ingevoerde tekens en de werking van automatisch aanvullen. Volgens Android Developers (2026) is InputType een van de belangrijkste attributen voor het waarborgen van correcte gegevensinvoer en moet expliciet worden ingesteld voor elk bewerkbaar tekstveld.

Belangrijkste punten

  • InputType — bitmasker dat de invoerklasse en modificatoren voor EditText bepaalt.
  • Invoerklassen — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME.
  • Modificatoren — vlaggen die het gedrag specificeren: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES.
  • Combineren — klasse en modificatoren worden via bitsgewijze OR samengevoegd voor nauwkeurige configuratie.
  • Invloed — correcte InputType versnelt invoer, vermindert fouten en verbetert de UX van het formulier.

Wat is InputType in Android

InputType — is een integerconstante (Int) die de invoermodus voor een tekstveld codeert. In Android is het gedefinieerd in de klasse android.text.InputType. De waarde InputType bestaat uit twee delen: de invoerklasse (bits 0–4) en modificatoren (bits 5–31). De invoerklasse bepaalt het basistype gegevens — tekst, nummer, telefoon, datum. Modificatoren specificeren het gedrag binnen de geselecteerde klasse — bijvoorbeeld voor de tekstklasse kan automatisch corrigeren, hoofdletters of meerregelige invoer worden ingeschakeld.

Het InputType-mechanisme werkt op drie niveaus: op het niveau van het Android-framework bepaalt het welke InputConnection wordt gemaakt (verbinding tussen EditText en IME); op het niveau van IME (toetsenbord) geeft het aan welke tekens worden weergegeven en hoe invoer wordt verwerkt; op het niveau van de applicatie filtert het tekens via de InputFilter die in EditText is ingebouwd. Volgens Android Source Code (AOSP, 2026) wordt het bitmasker verwerkt in de methode TextView.getInputType(), die de huidige waarde retourneert, en setInputType(), die interne filters en de verbinding met IME reconfigureert.

Een belangrijke eigenschap van InputType — het kan om veiligheidsredenen niet uit een ander proces worden gelezen. Dit voorkomt gegevensdiefstal via toegang tot het invoertype (bijvoorbeeld bepalen of een veld een wachtwoord is). Bij een poging om InputType uit een andere applicatie te lezen, wordt standaard TYPE_CLASS_TEXT geretourneerd.

kotlin
// Basis InputType-constanten
InputType.TYPE_CLASS_TEXT       // 0x0001 = 1
InputType.TYPE_CLASS_NUMBER     // 0x0002 = 2
InputType.TYPE_CLASS_PHONE      // 0x0003 = 3
InputType.TYPE_CLASS_DATETIME   // 0x0004 = 4

// Masker voor het extraheren van de klasse
InputType.TYPE_MASK_CLASS       // 0x0000000F

InputType-klassen: TEXT, NUMBER, PHONE, DATETIME

In Android zijn vier basis-InputType-klassen gedefinieerd. Elke klasse komt overeen met een specifieke gegevenscategorie en activeert het bijbehorende toetsenbordtype. De klasse wordt aangegeven in bits 0–4 van het bitmasker en kan worden geëxtraheerd via het masker TYPE_MASK_CLASS (0x0F).

KlasseConstanteToetsenbordToepassing
TEXTTYPE_CLASS_TEXT (1)QWERTYTekst, opmerkingen, beschrijving
NUMBERTYPE_CLASS_NUMBER (2)NumeriekHoeveelheid, prijs, leeftijd
PHONETYPE_CLASS_PHONE (3)TelefoonTelefoonnummer
DATETIMETYPE_CLASS_DATETIME (4)Datum/tijdDatum, tijd

TYPE_CLASS_DATETIME wordt zelden direct gebruikt — meestal wordt voor datum invoer DatePicker of DatePickerDialog gebruikt, niet een tekstveld. In sommige scenario's (snelle handmatige datum invoer) kan deze klasse echter nuttig zijn. Het heeft geen gespecialiseerd toetsenbord en toont meestal een numeriek toetsenbord.

Elke invoerklasse kan worden gecombineerd met variaties (variation) — subtypes aangegeven in bits 5–7. Bijvoorbeeld, TYPE_TEXT_VARIATION_PASSWORD (bit 5) voegt verborgen invoer toe aan de TEXT-klasse. Variatiebits: 0x000000E0 (masker TYPE_MASK_VARIATION).

InputType-vlaggen en modificatoren

InputType-vlaggen en modificatoren (bits 8–31) voegen extra mogelijkheden toe aan de basisklasse. Ze veranderen het toetsenbordtype niet, maar wijzigen het invoergedrag. Vlaggen zijn specifiek voor elke klasse — vlaggen voor TEXT werken niet met NUMBER en vice versa. Hieronder staan de belangrijkste modificatoren voor elke klasse.

Vlaggen voor TEXT

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — alle letters hoofdletters.
  • TYPE_TEXT_FLAG_CAP_WORDS — elk woord begint met een hoofdletter.
  • TYPE_TEXT_FLAG_CAP_SENTENCES — hoofdletter aan het begin van een zin (standaard).
  • TYPE_TEXT_FLAG_AUTO_CORRECT — automatische correctie van typefouten.
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — automatisch aanvullen (voor AutoCompleteTextView).
  • TYPE_TEXT_FLAG_MULTI_LINE — meerregelige invoer.
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — suggesties uitschakelen.

Vlaggen voor NUMBER

  • TYPE_NUMBER_FLAG_SIGNED — staat negatieve getallen toe (minteken).
  • TYPE_NUMBER_FLAG_DECIMAL — staat decimale punt toe.

Volgens Android Developers Documentation (2026) overlappen vlaggen voor verschillende klassen niet — een poging om een TEXT-vlag met NUMBER te gebruiken wordt genegeerd. Om een ingestelde vlag te controleren wordt bitsgewijze AND gebruikt: (inputType and FLAG) != 0.

InputType-combinaties: voorbeelden voor verschillende scenario's

De juiste combinatie van InputType met klassen en vlaggen is de sleutel tot het maken van gebruiksvriendelijke formulieren. Laten we typische scenario's en bijbehorende InputType-configuraties bekijken. Elk scenario optimaliseert invoer voor een specifiek gegevenstype, maakt het formulier intuïtief en versnelt het invullen.

ScenarioInputTypeToetsenbord
NaamtextCapWordsQWERTY, elk woord met hoofdletter
EmailtextEmailAddressQWERTY met @ en .
WachtwoordtextPasswordQWERTY, verborgen invoer
TelefoonphoneCijfers met +, #, *
PrijsnumberDecimalCijfers met komma
AantalnumberAlleen cijfers
OpmerkingtextCapSentences|textMultiLineQWERTY, meerregelig
Zoekentext|textNoSuggestionsQWERTY zonder suggesties
kotlin
// Combinatie voor prijsveld
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Combinatie voor opmerkingenveld
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_MULTI_LINE

Programmatisch werken met InputType

Het programmatisch instellen van InputType via setInputType() overschrijft de vorige waarde. Als slechts een deel van het masker moet worden gewijzigd (bijvoorbeeld een vlag toevoegen), moet de huidige waarde worden opgeslagen, gewijzigd en opnieuw worden toegepast. Elke aanroep van setInputType() reconfigureert de interne filters van EditText.

De methode setRawInputType() verschilt van setInputType doordat het geen herconfiguratie van filters en suggesties veroorzaakt. Het wordt gebruikt voor tijdelijke wijziging van InputType zonder volledige herlaad van de EditText-status. Na het aanroepen van setInputType() wordt aanbevolen de IME opnieuw te starten om het toetsenbord bij te werken.

Modus omschakelen

kotlin
// Schakelen tussen wachtwoord en zichtbare tekst
fun togglePasswordVisibility(editText: EditText) {
    val currentType = editText.inputType
    val isPassword = (currentType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0

    editText.inputType = if (isPassword) {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_PASSWORD
    }

    // Cursorpositie behouden
    val cursorPos = editText.selectionStart
    editText.setSelection(cursorPos)
}

Klasse en variatie extraheren

kotlin
// Invoerklasse ophalen
fun getInputClass(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_CLASS
}

// Invoervariatie ophalen
fun getInputVariation(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_VARIATION
}

// Controleren of het een wachtwoordveld is
fun isPasswordField(editText: EditText): Boolean {
    return (editText.inputType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}

Beste praktijken voor het kiezen van InputType

De juiste keuze van InputType is niet alleen UX, maar ook veiligheid en gegevenscorrectheid. De belangrijkste aanbevelingen omvatten: stel altijd expliciet InputType in voor elke EditText; gebruik de meest specifieke invoerklasse; combineer geen vlaggen uit verschillende klassen; gebruik voor velden met gevoelige gegevens de PASSWORD-variaties; gebruik voor zoekvelden imeOptions=„actionSearch”.

InputType beïnvloedt ook de werking van toegankelijkheidsdiensten (Accessibility). Velden met het type textPassword krijgen extra bescherming van schermlezers — ze lezen ingevoerde tekens niet hardop voor. Voor velden met textEmailAddress informeert de Screen Reader de gebruiker dat het veld voor e-mail is bedoeld en biedt passende suggesties.

  • Explicietheid — stel altijd expliciet InputType in, vertrouw niet op de standaardwaarde (textMultiLine).
  • Specificiteit — gebruik het meest specifieke type: textEmailAddress in plaats van text voor e-mail.
  • Veiligheid — gebruik voor wachtwoorden, PIN en kaartgegevens de PASSWORD-variaties.
  • Automatisch aanvullen — combineer InputType met autofillHints voor ondersteuning van wachtwoordmanagers.
  • Testen — controleer het gedrag op verschillende toetsenborden (Gboard, SwiftKey, Samsung Keyboard).

Volgens Material Design Guidelines (2025) moet InputType overeenkomen met het type gegevens dat de gebruiker invoert. Onjuiste InputType vertraagt niet alleen de invoer, maar kan ook leiden tot fouten: bijvoorbeeld, als voor het invoeren van een telefoonnummer textMultiLine wordt gebruikt, toont het toetsenbord geen numeriek blok en moet de gebruiker elke keer handmatig de lay-out wijzigen.

Veelgestelde vragen

Wat is het verschil tussen InputType en Keyboard Type?

InputType — is een EditText-attribuut dat het type ingevoerde gegevens bepaalt via een bitmasker. Keyboard Type — is de niet-officiële naam voor het visuele toetsenbordtype dat door InputType wordt geactiveerd. InputType beïnvloedt ook tekenfiltering, automatische correctie en automatisch aanvullen, niet alleen de toetsenbordindeling.

Hoe reset ik InputType naar de standaardwaarde?

Stel editText.inputType = InputType.TYPE_CLASS_TEXT in of gebruik de constante InputType.TYPE_NULL (0x00000000) voor volledige reset. Met TYPE_NULL toont het veld geen toetsenbord bij focus. Om terug te keren naar standaard tekstinvoer, stel TYPE_CLASS_TEXT in zonder vlaggen.

Kan ik een aangepaste InputType maken?

Het is niet mogelijk een nieuwe InputType-klasse te maken, omdat deze deel uitmaakt van het Android-framework. U kunt echter bestaande klassen en vlaggen combineren om het gewenste gedrag te bereiken. Implementeer extra tekenfiltering via InputFilter, dat op EditText wordt ingesteld via de methode setFilters().

Hoe beïnvloedt InputType de IME (toetsenbord)?

InputType wordt via InputConnection aan het invoersysteem doorgegeven. IME leest de klasse en variatie van InputType en selecteert de bijbehorende toetsenbordindeling. Bijvoorbeeld, TYPE_CLASS_NUMBER met TYPE_NUMBER_FLAG_DECIMAL zorgt ervoor dat het toetsenbord een numeriek blok met punt toont. De meeste moderne toetsenborden volgen deze aanbevelingen.

Hoe controleer ik InputType tijdens runtime?

Gebruik de eigenschap editText.inputType in Kotlin of de methode editText.getInputType() in Java. Om de klasse te extraheren, pas het masker toe: inputType and InputType.TYPE_MASK_CLASS. Om een specifieke vlag te controleren: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — als het resultaat != 0 is, is de vlag ingesteld.

Samenvatting

  • InputType — bitmasker bestaande uit de invoerklasse (TEXT, NUMBER, PHONE, DATETIME) en modificatoren.
  • Invoerklasse bepaalt het basistype gegevens en het type weergegeven toetsenbord.
  • Modificatoren specificeren het gedrag: meerregelig, automatisch corrigeren, hoofdletters, verborgen invoer.
  • Combineren via bitsgewijze OR maakt het mogelijk nauwkeurige configuraties te creëren voor verschillende scenario's.
  • PASSWORD-variaties schakelen automatisch corrigeren uit, verbergen tekens en voorkomen opslag in het woordenboek.
  • Programmatisch instellen via setInputType() vereist herstart van IME om het toetsenbord bij te werken.
  • Beste praktijken — stel InputType expliciet in, gebruik specifieke typen en test op verschillende toetsenborden.

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.

Bespreek het project

Lees ook