Geben Sie den Typ der Eingabemethode an.

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zur Verwendung von Touch- und Eingabefunktionen in Compose

Für jedes Textfeld ist eine bestimmte Art von Texteingabe erforderlich, z. B. eine E‑Mail-Adresse, eine Telefonnummer oder Nur-Text. Sie müssen den Eingabetyp für jedes Textfeld in Ihrer App angeben, damit das System die entsprechende Soft-Eingabemethode wie eine Bildschirmtastatur anzeigt.

Neben der Art der Schaltflächen, die mit einer Eingabemethode verfügbar sind, können Sie auch Verhaltensweisen festlegen, z. B. ob die Eingabemethode Rechtschreibvorschläge liefert, neue Sätze großschreibt und die Eingabetaste durch einen Aktionsbutton wie Fertig oder Weiter ersetzt. Auf dieser Seite wird beschrieben, wie Sie diese Merkmale angeben.

Tastaturtyp angeben

Deklarieren Sie die Eingabemethode für Ihre Textfelder immer, indem Sie dem <EditText>-Element das Attribut android:inputType hinzufügen.

Eingabefeld für die Telefonnummer
Abbildung 1. Der Eingabetyp phone.

Wenn Sie beispielsweise eine Eingabemethode zum Eingeben einer Telefonnummer benötigen, verwenden Sie den Wert "phone":

<EditText
    android:id="@+id/phone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/phone_hint"
    android:inputType="phone" />
Eingabetyp „textPassword“
Abbildung 2. Der Eingabetyp textPassword
.

Wenn das Textfeld für ein Passwort vorgesehen ist, verwenden Sie den Wert "textPassword", damit die Eingabe des Nutzers im Textfeld verborgen wird:

<EditText
    android:id="@+id/password"
    android:hint="@string/password_hint"
    android:inputType="textPassword"
    ... />

Für das Attribut android:inputType sind mehrere mögliche Werte dokumentiert. Sie können einige der Werte kombinieren, um das Erscheinungsbild der Eingabemethode und zusätzliches Verhalten festzulegen.

Rechtschreibvorschläge und andere Funktionen aktivieren

Autokorrektur
Abbildung 3: Durch das Hinzufügen von textAutoCorrect wird die Autokorrektur für Rechtschreibfehler aktiviert.

Mit dem Attribut android:inputType können Sie verschiedene Verhaltensweisen für die Eingabemethode angeben. Am wichtigsten ist, wenn Ihr Textfeld für die einfache Texteingabe vorgesehen ist, z. B. für eine Nachricht, sollten Sie die automatische Rechtschreibkorrektur mit dem Wert "textAutoCorrect" aktivieren.

Sie können verschiedene Verhaltensweisen und Stile für die Eingabemethode mit dem Attribut android:inputType kombinieren. So erstellen Sie beispielsweise ein Textfeld, in dem das erste Wort eines Satzes großgeschrieben und Rechtschreibfehler automatisch korrigiert werden:

<EditText
    android:id="@+id/message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType=
        "textCapSentences|textAutoCorrect"
    ... />

Eingabemethodenaktion angeben

Die meisten Soft-Eingabemethoden bieten in der unteren Ecke eine Schaltfläche für Nutzeraktionen, die für das aktuelle Textfeld geeignet ist. Standardmäßig wird diese Schaltfläche vom System für die Aktion Weiter oder Fertig verwendet, sofern Ihr Textfeld keine mehrzeiligen Texte unterstützt, wie z. B. bei android:inputType="textMultiLine". In diesem Fall ist der Aktionsbutton ein Zeilenumbruch. Sie können jedoch andere Aktionen angeben, die für Ihr Textfeld besser geeignet sind, z. B. Senden oder Los.

Verwenden Sie das Attribut android:imeOptions mit einem Aktionswert wie "actionSend" oder "actionSearch", um die Tastatur-Aktionsbutton anzugeben. Beispiel:

Schaltfläche „Senden“
Abbildung 4: Der Button Senden wird angezeigt, wenn Sie android:imeOptions="actionSend" deklarieren.
<EditText
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/search_hint"
    android:inputType="text"
    android:imeOptions="actionSend" />

Sie können dann auf das Drücken des Aktionsbuttons reagieren, indem Sie einen TextView.OnEditorActionListener für das EditText-Element definieren. Reagieren Sie in Ihrem Listener auf die entsprechende IME-Aktions-ID, die in der Klasse EditorInfo definiert ist, z. B. IME_ACTION_SEND, wie im folgenden Beispiel gezeigt:

Kotlin

findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event ->
    return@setOnEditorActionListener when (actionId) {
        EditorInfo.IME_ACTION_SEND -> {
            sendMessage()
            true
        }
        else -> false
    }
}

Java

EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            sendMessage();
            handled = true;
        }
        return handled;
    }
});

Vorschläge zur automatischen Vervollständigung bereitstellen

Wenn Sie Nutzern während der Eingabe Vorschläge machen möchten, können Sie eine Unterklasse von EditText namens AutoCompleteTextView verwenden. Wenn Sie die automatische Vervollständigung implementieren möchten, müssen Sie ein Adapter angeben, das die Textvorschläge liefert. Je nachdem, woher die Daten stammen, z. B. aus einer Datenbank oder einem Array, sind verschiedene Adapter verfügbar.

Textvorschläge
Abbildung 5. Beispiel für AutoCompleteTextView mit Textvorschlägen.

Im folgenden Verfahren wird beschrieben, wie Sie ein AutoCompleteTextView einrichten, das Vorschläge aus einem Array mit ArrayAdapter bereitstellt:

  1. Fügen Sie das AutoCompleteTextView in Ihr Layout ein. Hier sehen Sie ein Layout mit nur dem Textfeld:
    <?xml version="1.0" encoding="utf-8"?>
    <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/autocomplete_country"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
  2. Definieren Sie das Array, das alle Textvorschläge enthält. Hier ist beispielsweise ein Array mit Ländernamen:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="countries_array">
            <item>Afghanistan</item>
            <item>Albania</item>
            <item>Algeria</item>
            <item>American Samoa</item>
            <item>Andorra</item>
            <item>Angola</item>
            <item>Anguilla</item>
            <item>Antarctica</item>
            ...
        </string-array>
    </resources>
  3. Verwenden Sie in Ihrer Activity- oder Fragment-Datei den folgenden Code, um den Adapter anzugeben, der die Vorschläge liefert:

    Kotlin

    // Get a reference to the AutoCompleteTextView in the layout.
    val textView = findViewById(R.id.autocomplete_country) as AutoCompleteTextView
    // Get the string array.
    val countries: Array<out String> = resources.getStringArray(R.array.countries_array)
    // Create the adapter and set it to the AutoCompleteTextView.
    ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries).also { adapter ->
        textView.setAdapter(adapter)
    }

    Java

    // Get a reference to the AutoCompleteTextView in the layout.
    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
    // Get the string array.
    String[] countries = getResources().getStringArray(R.array.countries_array);
    // Create the adapter and set it to the AutoCompleteTextView.
    ArrayAdapter<String> adapter =
            new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries);
    textView.setAdapter(adapter);

    Im vorherigen Beispiel wird ein neues ArrayAdapter initialisiert, um jedes Element im String-Array countries_array an ein TextView zu binden, das im Layout simple_list_item_1 vorhanden ist. Dies ist ein von Android bereitgestelltes Layout, das ein Standard-Erscheinungsbild für Text in einer Liste bietet.

  4. Weisen Sie den Adapter dem AutoCompleteTextView zu, indem Sie setAdapter() aufrufen.