Geben Sie den Typ der Eingabemethode an.

Funktion „Schreiben“ ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Weitere Informationen

Für jedes Textfeld wird eine bestimmte Texteingabe erwartet, z. B. eine E-Mail-Adresse, Telefonnummer oder Nur-Text. Sie müssen den Eingabetyp für jedes Textfeld in Ihrer App festlegen, damit das System die entsprechende Soft-Eingabemethode, z. B. eine Bildschirmtastatur, anzeigt.

Neben den Schaltflächen, die für eine Eingabemethode verfügbar sind, können Sie auch Verhaltensweisen festlegen, z. B. ob die Eingabemethode Rechtschreibvorschläge bereitstellt, neue Sätze großschreibt oder die Schaltfläche zum Zeilenumbruch durch eine Aktionsschaltfläche wie Fertig oder Weiter ersetzt. Auf dieser Seite erfahren Sie, wie Sie diese Eigenschaften angeben.

Tastaturtyp angeben

Deklarieren Sie immer die Eingabemethode für die Textfelder. Fügen Sie dazu dem <EditText>-Element das Attribut android:inputType hinzu.

Telefoneingabe
Abbildung 1: Der Eingabetyp phone.

Wenn Sie beispielsweise eine Eingabemethode zum Eingeben einer Telefonnummer wünschen, 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 das Textfeld die Eingabe des Nutzers verdeckt:

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

Mit dem Attribut android:inputType sind mehrere mögliche Werte dokumentiert. Sie können einige der Werte kombinieren, um die Darstellung der Eingabemethode und weitere Verhaltensweisen festzulegen.

Rechtschreibvorschläge und andere Funktionen aktivieren

Autokorrektur
Abbildung 3: Durch Hinzufügen von textAutoCorrect werden Rechtschreibfehler automatisch korrigiert.

Mit dem Attribut android:inputType können Sie verschiedene Verhaltensweisen für die Eingabemethode angeben. Wenn Ihr Textfeld für die grundlegende Texteingabe vorgesehen ist, z. B. für eine Textnachricht, müssen Sie die automatische Rechtschreibkorrektur mit dem Wert "textAutoCorrect" aktivieren.

Mit dem Attribut android:inputType können Sie verschiedene Verhaltensweisen und Eingabemethodenstile kombinieren. So erstellen Sie beispielsweise ein Textfeld, in dem das erste Wort eines Satzes großgeschrieben und Rechtschreibfehler außerdem automatisch korrigiert werden:

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

Aktion für Eingabemethode angeben

Bei den meisten Soft-Eingabemethoden befindet sich in der unteren Ecke eine Schaltfläche für Nutzeraktionen, die für das aktuelle Textfeld geeignet ist. Standardmäßig verwendet das System diese Schaltfläche entweder für die Aktion Weiter oder Fertig, es sei denn, Ihr Textfeld unterstützt mehrzeiligen Text (z. B. android:inputType="textMultiLine"). In diesem Fall ist die Aktionsschaltfläche ein Zeilenumbruch. Sie können jedoch auch andere Aktionen festlegen, die für Ihr Textfeld besser geeignet sind, z. B. Send oder Go.

Verwenden Sie zum Angeben der Tastaturaktionsschaltfläche das Attribut android:imeOptions mit einem Aktionswert wie "actionSend" oder "actionSearch". Beispiel:

Schaltfläche „Senden“
Abbildung 4: Die Schaltfläche 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 warten, ob auf die Aktionsschaltfläche geklickt wird. Definieren Sie dazu ein TextView.OnEditorActionListener für das EditText-Element. Antworten Sie im 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 für die automatische Vervollständigung angeben

Wenn Sie Nutzern während der Eingabe Vorschläge machen möchten, können Sie eine abgeleitete Klasse von EditText mit dem Namen AutoCompleteTextView verwenden. Zur Implementierung der automatischen Vervollständigung müssen Sie ein Adapter mit den Textvorschlägen angeben. Je nachdem, woher die Daten stammen, z. B. aus einer Datenbank oder einem Array, sind mehrere Adapter verfügbar.

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

Im Folgenden wird beschrieben, wie Sie ein AutoCompleteTextView einrichten, das mithilfe von ArrayAdapter Vorschläge aus einem Array liefert:

  1. Fügen Sie Ihrem Layout AutoCompleteTextView hinzu. Hier ist ein Layout, das nur das Textfeld enthält:
    <?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 als Beispiel 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 Activity oder Fragment den folgenden Code, um den Adapter anzugeben, der die Vorschläge bereitstellt:

    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 neuer ArrayAdapter initialisiert, um jedes Element im countries_array-String-Array an eine TextView zu binden, die im simple_list_item_1-Layout vorhanden ist. Dieses von Android bereitgestellte Layout bietet eine Standarddarstellung für Text in einer Liste.

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