Eingabe mit Eingabestift in Textfelder

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zur Arbeit mit einem Eingabestift in Compose

Unter Android 14 (API-Level 34) und höher können Nutzer in jeder App mit einem Eingabestift in jedes Textfeld schreiben. Android-Texteingabefelder, einschließlich EditText-Komponenten und WebView-Text-Widgets, unterstützen standardmäßig die Eingabe per Eingabestift.

Wenn Ihre App jedoch benutzerdefinierte Texteingabefelder erfordert (siehe Benutzerdefinierte Texteditoren) oder ein komplexes Layout mit Texteingabefeldern hat, die eine Zeichenfläche überlagern, müssen Sie Ihre App anpassen.

Abbildung 1 Handschriftliche Eingabe mit einem Eingabestift

EditText

Das Schreiben mit Eingabestift ist unter Android 14 und höher standardmäßig für alle EditText-Felder aktiviert. Der Modus für die Handschrift wird für eine EditText gestartet, wenn ein Eingabestiftereignis innerhalb der Grenzen für die Handschrift in der Ansicht erkannt wird.

Die Begrenzungen für die Handschrift umfassen einen vertikalen Abstand von 40 dp und einen horizontalen Abstand von 10 dp um die Ansicht herum. Passen Sie die Begrenzung für die Handschrift mit setHandwritingBoundsOffsets() an. Deaktivieren Sie die Handschrifteingabe mit setAutoHandwritingEnabled(false).

Eingabefeld mit umliegendem Rechteck, das die Grenzen für die Erkennung von Eingabestiftbewegungsereignissen angibt.
Abbildung 2. Handschriftliche Begrenzungen von EditText-Feldern.

Eingabedelegierung

Apps können Platzhalter-UI-Elemente anzeigen, die wie Texteingabefelder aussehen, aber in Wirklichkeit nur statische UI-Elemente ohne Texteingabefunktion sind. Suchfelder sind ein häufiges Beispiel. Durch Tippen auf das statische UI-Element wird ein Übergang zu einer neuen Benutzeroberfläche ausgelöst, die ein funktionsfähiges Texteingabefeld enthält, das für die Eingabe aktiviert ist.

Abbildung 3 Delegierung der Eingabe von einem statischen UI-Element an ein Texteingabefeld.

Delegierung der Eingabe per Eingabestift

Verwenden Sie die APIs zur Delegierung der Handschrifterkennung, um die Eingabe per Eingabestift für Platzhalter-Eingabefelder zu unterstützen (siehe setHandwritingDelegatorCallback() und setIsHandwritingDelegate()). Das UI-Element für Platzhalter ist so konfiguriert, dass die Handschrifterkennung an ein funktionales Eingabefeld delegiert wird, z. B.:

Kotlin

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback {
        showAndFocusDelegateInputField()
    }
    delegateInputField.setIsHandwritingDelegate(true)
}

Java

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate);
    delegateInputField.setIsHandwritingDelegate(true);
}

Wenn Sie den Eingabestift über das Eingabefeld für Platzhaltertext bewegen, wird der Rückruf aufgerufen. Der Callback löst den UI-Übergang aus, um das funktionale Eingabefeld anzuzeigen und darauf zu fokussieren. Die Implementierung des Rückrufs entspricht in der Regel der Implementierung eines Klick-Listeners für das Platzhalterelement. Wenn das funktionale Eingabefeld ein InputConnection erstellt, wird der Modus für die Eingabe per Eingabestift gestartet.

Abbildung 4 Delegierung der Eingabe per Eingabestift von einem statischen UI-Element an ein Texteingabefeld.

Material Design

Die Bibliothek com.google.android.material.search bietet die Klassen SearchBar und SearchView, um die Implementierung des UI-Musters für Platzhalter zu vereinfachen.

Platzhalter- und Suchansichtsansichten sind mit setUpWithSearchBar() verknüpft.

Die Delegierung der Handschrifterkennung wird in der Material Library konfiguriert. In Ihrer App sind keine zusätzlichen Entwicklungsarbeiten erforderlich.

Überlappen mit Zeichenflächen

Wenn Ihre App eine Zeichenfläche mit einem Textfeld hat, das die Fläche überlagert, müssen Sie möglicherweise die Handschrifterkennung des Eingabestifts deaktivieren, damit Nutzer zeichnen können. Weitere Informationen finden Sie unter setAutoHandwritingEnabled().

Testen

Die Eingabe per Eingabestift wird auf Geräten mit Android 14 und höher mit einem kompatiblen Eingabestift und einem Eingabemethoden-Editor (IME) unterstützt, der die APIs für die Eingabe per Eingabestift von Android 14 unterstützt.

Wenn Sie kein Eingabegerät mit Eingabestift haben, können Sie die Eingabestifteingabe mit den folgenden Android Debug Bridge-Befehlen (adb) auf jedem Gerät mit Root-Zugriff (einschließlich Emulatoren) simulieren:


// Android 14
adb shell setprop persist.debug.input.simulate_stylus_with_touch true && adb shell stop && adb shell start

// Android 15 and higher
// Property takes effect after screen reconfiguration such as orientation change.
adb shell setprop debug.input.simulate_stylus_with_touch true

Verwenden Sie die Gboard-Betaversion, wenn Sie ein Gerät verwenden, das keinen Eingabestift unterstützt.

Weitere Informationen