InputType — was es ist, Eingabeattribute und deren Konfiguration in Android

Autor: IT Sectr Veröffentlicht: 2026-07-07 Lesezeit: 9 Min.

InputType ist ein Android-Attribut, das die Art der Eingabedaten und das Tastaturverhalten für Textfelder bestimmt. Der InputType-Wert ist eine Bitmaske, die die Eingabeklasse (Text, Zahl, Telefon, Datum) und Modifikatoren (mehrzeilig, Autokorrektur, Großbuchstaben, versteckte Eingabe) kombiniert. InputType beeinflusst den Typ der angezeigten Tastatur, die Filterung von Eingabezeichen und das Autofill-Verhalten. Laut Android Developers (2026) ist InputType eines der wichtigsten Attribute zur Gewährleistung korrekter Dateneingabe und sollte für jedes bearbeitbare Textfeld explizit festgelegt werden.

Wichtige Erkenntnisse

  • InputType — eine Bitmaske, die die Eingabeklasse und Modifikatoren für EditText definiert.
  • Eingabeklassen — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME.
  • Modifikatoren — Flags, die das Verhalten verfeinern: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES.
  • Kombination — Klasse und Modifikatoren werden durch bitweises ODER für eine präzise Konfiguration kombiniert.
  • Auswirkung — korrekter InputType beschleunigt die Eingabe, reduziert Fehler und verbessert die UX des Formulars.

Was ist InputType in Android

InputType ist eine ganzzahlige Konstante (Int), die den Eingabemodus für ein Textfeld codiert. In Android ist sie in der Klasse android.text.InputType definiert. Der InputType-Wert besteht aus zwei Teilen: der Eingabeklasse (Bits 0–4) und den Modifikatoren (Bits 5–31). Die Eingabeklasse definiert den grundlegenden Datentyp — Text, Zahl, Telefon, Datum. Die Modifikatoren verfeinern das Verhalten innerhalb der ausgewählten Klasse — zum Beispiel können Sie für die Textklasse die Autokorrektur, Großbuchstaben oder mehrzeilige Eingabe aktivieren.

Der InputType-Mechanismus funktioniert auf drei Ebenen: Auf der Android-Framework-Ebene bestimmt er, welcher InputConnection erstellt wird (die Verbindung zwischen EditText und IME); auf der IME-Ebene (Tastatur) gibt er an, welche Zeichen angezeigt und wie Eingaben verarbeitet werden; auf der Anwendungsebene filtert er Zeichen durch den in EditText integrierten InputFilter. Laut Android Source Code (AOSP, 2026) wird die Bitmaske in der Methode TextView.getInputType(), die den aktuellen Wert zurückgibt, und setInputType(), die interne Filter und die IME-Verbindung neu konfiguriert, verarbeitet.

Eine wichtige Eigenschaft von InputType ist, dass es aus Sicherheitsgründen nicht von einem anderen Prozess gelesen werden kann. Dies verhindert Datendiebstahl durch Zugriff auf den Eingabetyp (z.B. Feststellung, ob ein Feld ein Passwort ist). Beim Versuch, InputType aus einer anderen Anwendung zu lesen, wird standardmäßig TYPE_CLASS_TEXT zurückgegeben.

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

// Maske zum Extrahieren der Klasse
InputType.TYPE_MASK_CLASS       // 0x0000000F

InputType-Klassen: TEXT, NUMBER, PHONE, DATETIME

Android definiert vier grundlegende InputType-Klassen. Jede Klasse entspricht einer bestimmten Datenkategorie und aktiviert den entsprechenden Tastaturtyp. Die Klasse wird in den Bits 0–4 der Bitmaske angegeben und kann über die Maske TYPE_MASK_CLASS (0x0F) extrahiert werden.

KlasseKonstanteTastaturVerwendung
TEXTTYPE_CLASS_TEXT (1)QWERTZ-TastaturText, Kommentare, Beschreibung
NUMBERTYPE_CLASS_NUMBER (2)NumerischMenge, Preis, Alter
PHONETYPE_CLASS_PHONE (3)TelefonTelefonnummer
DATETIMETYPE_CLASS_DATETIME (4)Datum/UhrzeitDatum, Uhrzeit

TYPE_CLASS_DATETIME wird selten direkt verwendet — für die Datumseingabe werden normalerweise DatePicker oder DatePickerDialog anstelle eines Textfelds verwendet. In einigen Szenarien (schnelle manuelle Datumseingabe) kann diese Klasse jedoch nützlich sein. Sie hat keine spezialisierte Tastatur und zeigt normalerweise eine numerische Tastatur an.

Jede Eingabeklasse kann mit Variationen kombiniert werden — Untertypen, die in den Bits 5–7 angegeben sind. Beispielsweise fügt TYPE_TEXT_VARIATION_PASSWORD (Bit 5) der TEXT-Klasse eine versteckte Eingabe hinzu. Variationsbits: 0x000000E0 (TYPE_MASK_VARIATION-Maske).

InputType-Modifikator-Flags

Die Modifikator-Flags von InputType (Bits 8–31) fügen der Basisklasse zusätzliche Fähigkeiten hinzu. Sie ändern nicht den Tastaturtyp, sondern modifizieren das Eingabeverhalten. Flags sind für jede Klasse spezifisch — TEXT-Flags funktionieren nicht mit NUMBER und umgekehrt. Nachfolgend sind die wichtigsten Modifikatoren für jede Klasse aufgeführt.

Flags für TEXT

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — alle Buchstaben groß.
  • TYPE_TEXT_FLAG_CAP_WORDS — jedes Wort beginnt mit einem Großbuchstaben.
  • TYPE_TEXT_FLAG_CAP_SENTENCES — Großbuchstabe am Satzanfang (Standard).
  • TYPE_TEXT_FLAG_AUTO_CORRECT — automatische Korrektur von Tippfehlern.
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — Autovervollständigung (für AutoCompleteTextView).
  • TYPE_TEXT_FLAG_MULTI_LINE — mehrzeilige Eingabe.
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — Vorschläge deaktivieren.

Flags für NUMBER

  • TYPE_NUMBER_FLAG_SIGNED — erlaubt negative Zahlen (Minuszeichen).
  • TYPE_NUMBER_FLAG_DECIMAL — erlaubt Dezimalpunkt.

Laut Android Developers Documentation (2026) überschneiden sich Flags verschiedener Klassen nicht — der Versuch, ein TEXT-Flag mit NUMBER zu verwenden, wird ignoriert. Um ein gesetztes Flag zu überprüfen, verwenden Sie bitweises UND: (inputType and FLAG) != 0.

InputType-Kombinationen: Beispiele für verschiedene Szenarien

Die richtige Kombination von InputType-Klassen und -Flags ist der Schlüssel zur Erstellung benutzerfreundlicher Formulare. Betrachten wir typische Szenarien und ihre entsprechenden InputType-Konfigurationen. Jedes Szenario optimiert die Eingabe für einen bestimmten Datentyp, macht das Formular intuitiv und beschleunigt das Ausfüllen.

SzenarioInputTypeTastatur
NametextCapWordsQWERTZ, jedes Wort groß
E-MailtextEmailAddressQWERTZ mit @ und .
PassworttextPasswordQWERTZ, versteckte Eingabe
TelefonphoneZiffern mit +, #, *
PreisnumberDecimalZiffern mit Dezimalpunkt
MengenumberNur Ziffern
KommentartextCapSentences|textMultiLineQWERTZ, mehrzeilig
Suchetext|textNoSuggestionsQWERTZ ohne Vorschläge
kotlin
// Kombination für Preisfeld
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Kombination für Kommentarfeld
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_MULTI_LINE

Programmatische Arbeit mit InputType

Das programmatische Setzen von InputType über setInputType() überschreibt den vorherigen Wert. Wenn Sie nur einen Teil der Maske ändern müssen (z.B. ein Flag hinzufügen), müssen Sie den aktuellen Wert speichern, ändern und erneut anwenden. Jeder Aufruf von setInputType() konfiguriert die internen EditText-Filter neu.

Die Methode setRawInputType() unterscheidet sich von setInputType dadurch, dass sie keine Neukonfiguration von Filtern und Vorschlägen auslöst. Sie wird verwendet, um InputType vorübergehend zu ändern, ohne den gesamten EditText-Zustand neu zu laden. Nach dem Aufruf von setInputType() wird empfohlen, das IME neu zu starten, um die Tastatur zu aktualisieren.

Modus umschalten

kotlin
// Zwischen Passwort und sichtbarem Text umschalten
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
    }

    // Cursorposition beibehalten
    val cursorPos = editText.selectionStart
    editText.setSelection(cursorPos)
}

Klasse und Variation extrahieren

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

// Eingabevariation abrufen
fun getInputVariation(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_VARIATION
}

// Prüfen, ob Passwortfeld
fun isPasswordField(editText: EditText): Boolean {
    return (editText.inputType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}

Best Practices für die Wahl von InputType

Die Wahl des richtigen InputType betrifft nicht nur die UX, sondern auch die Sicherheit und Datenkorrektheit. Zu den wichtigsten Empfehlungen gehören: immer einen expliziten InputType für jedes EditText angeben; die spezifischste mögliche Eingabeklasse verwenden; keine Flags aus verschiedenen Klassen kombinieren; PASSWORD-Variationen für sensible Datenfelder verwenden; imeOptions="actionSearch" für Suchfelder verwenden.

InputType beeinflusst auch die Bedienung der Barrierefreiheitsdienste (Accessibility). Felder mit dem Typ textPassword erhalten zusätzlichen Schutz durch Bildschirmleseprogramme — sie lesen eingegebene Zeichen nicht vor. Bei textEmailAddress-Feldern teilt der Screenreader dem Benutzer mit, dass das Feld für E-Mails bestimmt ist, und gibt entsprechende Hinweise.

  • Eindeutigkeit — InputType immer explizit festlegen, sich nicht auf den Standardwert (textMultiLine) verlassen.
  • Spezifität — den spezifischsten Typ verwenden: textEmailAddress, nicht text, für E-Mail.
  • Sicherheit — für Passwörter, PINs und Kartendaten PASSWORD-Variationen verwenden.
  • Autofill — InputType mit autofillHints kombinieren, um Passwortmanager zu unterstützen.
  • Testen — Verhalten auf verschiedenen Tastaturen testen (Gboard, SwiftKey, Samsung Keyboard).

Laut Material Design Guidelines (2025) sollte der InputType mit dem Datentyp übereinstimmen, den der Benutzer eingibt. Ein falscher InputType verlangsamt nicht nur die Eingabe, sondern kann auch zu Fehlern führen: zum Beispiel, wenn Sie für ein Telefonnummernfeld textMultiLine belassen, zeigt die Tastatur keinen Ziffernblock an, und der Benutzer muss jedes Mal manuell das Layout wechseln.

Häufig gestellte Fragen

Wie unterscheidet sich InputType von Keyboard Type?

InputType ist ein EditText-Attribut, das den Typ der Eingabedaten durch eine Bitmaske definiert. Keyboard Type ist ein inoffizieller Name für den visuellen Tastaturtyp, der durch InputType aktiviert wird. InputType beeinflusst auch die Zeichenfilterung, Autokorrektur und Autovervollständigung — nicht nur das Tastaturlayout.

Wie setze ich InputType auf den Standardwert zurück?

Setzen Sie editText.inputType = InputType.TYPE_CLASS_TEXT oder verwenden Sie die Konstante InputType.TYPE_NULL (0x00000000) für einen vollständigen Reset. Bei TYPE_NULL zeigt das Feld bei Fokus keine Tastatur an. Um zur Standardtexteingabe zurückzukehren, setzen Sie TYPE_CLASS_TEXT ohne Flags.

Kann ich einen benutzerdefinierten InputType erstellen?

Sie können keine neue InputType-Klasse erstellen, da sie Teil des Android-Frameworks ist. Sie können jedoch vorhandene Klassen und Flags kombinieren, um das gewünschte Verhalten zu erzielen. Implementieren Sie zusätzliche Zeichenfilterung über InputFilter, der mit der Methode setFilters() auf EditText gesetzt wird.

Wie wirkt sich InputType auf das IME (Tastatur) aus?

InputType wird über InputConnection an das Eingabesystem übergeben. Das IME liest die InputType-Klasse und -Variation und wählt das entsprechende Tastaturlayout aus. Beispielsweise bewirkt TYPE_CLASS_NUMBER mit TYPE_NUMBER_FLAG_DECIMAL, dass die Tastatur einen Ziffernblock mit Dezimalpunkt anzeigt. Die meisten modernen Tastaturen befolgen diese Empfehlungen.

Wie überprüfe ich InputType zur Laufzeit?

Verwenden Sie die Eigenschaft editText.inputType in Kotlin oder editText.getInputType() in Java. Um die Klasse zu extrahieren, wenden Sie die Maske an: inputType and InputType.TYPE_MASK_CLASS. Um ein bestimmtes Flag zu überprüfen: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — wenn das Ergebnis != 0 ist, ist das Flag gesetzt.

Zusammenfassung

  • InputType — eine Bitmaske bestehend aus einer Eingabeklasse (TEXT, NUMBER, PHONE, DATETIME) und Modifikatoren.
  • Eingabeklasse definiert den grundlegenden Datentyp und den Typ der angezeigten Tastatur.
  • Modifikatoren verfeinern das Verhalten: mehrzeilig, Autokorrektur, Großbuchstaben, versteckte Eingabe.
  • Kombination durch bitweises ODER ermöglicht präzise Konfigurationen für verschiedene Szenarien.
  • PASSWORD-Variationen deaktivieren Autokorrektur, verbergen Zeichen und verhindern Wörterbucheinträge.
  • Programmatische Einstellung über setInputType() erfordert einen Neustart des IME zur Aktualisierung der Tastatur.
  • Best Practices — InputType explizit setzen, spezifische Typen verwenden und auf verschiedenen Tastaturen testen.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch