Eingabe mit Eingabestift in Textfelder

Nutzer mit Android 14 (API-Level 34) und höher können in jede beliebige Texteingabe schreiben in jeder App mit einem Eingabestift verwenden. Android-Texteingabefelder, einschließlich EditText-Komponenten und WebView Text-Widgets, Unterstützung Eingabestift.

Wenn für Ihre App jedoch benutzerdefinierte Texteingabefelder erforderlich sind (siehe Benutzerdefinierter Text Bearbeiter) oder ein komplexes Layout mit Texteingabefeldern über einer Zeichenfläche hat, Ihre App anpassen müssen.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
</ph> Abbildung 1: Handschriftliche Eingabe mit einem Eingabestift.

EditText

Unter Android 14 ist das Schreiben mit Eingabestift standardmäßig für alle EditText-Felder aktiviert und höher. Der Handschriftmodus wird für eine EditText gestartet, wenn eine Eingabe per Eingabestift erfolgt innerhalb der Handschriftgrenzen der Ansicht erkannt wird.

Die Handschriftgrenzen umfassen 40 dp vertikale und 10 dp horizontale Abstände Abstand um die Ansicht. Passen Sie die Handschriftgrenzen mit setHandwritingBoundsOffsets() Handschrift deaktivieren mit setAutoHandwritingEnabled(false)

<ph type="x-smartling-placeholder">
</ph> Eingabefeld mit umgebenem Rechteck, das die Grenzen für die Erkennung von Eingabestift-Bewegungsereignissen angibt. <ph type="x-smartling-placeholder">
</ph> Abbildung 2: Handschriftliche Grenzen von EditText Feldern.

Eingabedelegierung

In Apps können Platzhalter-UI-Elemente angezeigt werden, die wie Texteingabefelder aussehen, aber sind eigentlich nur statische UI-Elemente ohne Texteingabefunktion. Suche sind ein gängiges Beispiel. Durch Tippen auf das statische UI-Element wird ein Übergang ausgelöst auf eine neue Benutzeroberfläche, die ein funktionales Texteingabefeld für die Eingabe enthält.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
</ph> Abbildung 3: Eingabedelegierung vom statischen UI-Element in das Texteingabefeld.

Eingabe per Eingabestift delegieren

Verwenden Sie die APIs zur Handschriftdelegierung, um die Eingabe der Handschrift per Eingabestift in Platzhalter-Eingabefelder (siehe setHandwritingDelegatorCallback() und setIsHandwritingDelegate()). Das Platzhalter-UI-Element ist so konfiguriert, dass Handschrift an eine funktionale Eingabefeld. Beispiel:

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);
}

Durch Bewegung des Eingabestifts über dem Texteingabefeld des Platzhalters wird der Rückruf ausgelöst. Der Callback löst den UI-Übergang aus, um die Funktionseingabe anzuzeigen und hervorzuheben. ein. Die Callback-Implementierung entspricht für einen Klick-Listener für das Platzhalterelement. Wenn das Eingabefeld für die Funktion erstellt ein InputConnection, Der Handschriftmodus für Eingabestifte wird gestartet.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
</ph> Abbildung 4: Eingabebevollmächtigung für Eingabestift vom statischen UI-Element zum Texteingabefeld.

Material Design

Die com.google.android.material.search Bibliothek die SearchBar und SearchView Kurse um die Implementierung des Platzhalter-UI-Musters zu erleichtern.

Platzhalter und funktionale Suchansichten sind verknüpft mit setUpWithSearchBar()

Die Handschriftdelegierung wird in der Material-Bibliothek ohne zusätzliche für Ihre App erforderlich sind.

Überschneidung mit Zeichenflächen

Wenn Ihre App eine Zeichenfläche mit einem Textfeld hat, das die Oberfläche überlagert, können Sie muss möglicherweise die Eingabe per Eingabestift deaktivieren, damit der Nutzer zeichnen kann. Weitere Informationen finden Sie unter setAutoHandwritingEnabled()

Testen

Die Eingabe per Eingabestift wird auf Geräten mit Android 14 und höher unterstützt, kompatiblen Eingabegerät und einer Eingabemethode Editor (IME) verwenden, unterstützt die Eingabestift-APIs für Android 14.

Wenn du kein Eingabegerät hast, kannst du die Eingabe per Eingabestift auf jedem beliebigen Gerät simulieren mit Root-Zugriff (einschließlich Emulatoren) über die folgende Android Debug Bridge (adb)-Befehlen:


// 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 zum Testen die Gboard-Betaversion, wenn Sie ein Gerät verwenden, das diese Funktion nicht unterstützt Eingabestift.

Weitere Informationen