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.
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.](https://developer.android.google.cn/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=19&hl=de)
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.
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.
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
- Material Design – Textfelder
- Benutzerdefinierte Texteditoren