Eingabe mit Eingabestift in Textfelder

Mit der Jetpack-Bibliothek androidx.compose.material3 können Nutzer mit einem Stylus in jede TextField-Komponente in jeder App schreiben.

Abbildung 1. Handschriftliche Eingabe mit einem Eingabestift.

Wenn Sie die Stifteingabe standardmäßig aktivieren möchten, fügen Sie die Bibliotheksabhängigkeit der Datei build.gradle Ihrer App hinzu:

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION"
    }

    kotlinOptions {
        jvmTarget = "LATEST_JVM_VERSION"
    }
}

Groovy

dependencies {
    implementation 'androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION'
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = 'LATEST_EXTENSION_VERSION'
    }

    kotlinOptions {
        jvmTarget = 'LATEST_JVM_VERSION'
    }
}

TextField

Die Stifteingabe ist für alle TextField-Komponenten unter Android 14 und höher sowie für die androidx.compose.foundation:foundation:1.7.0-Abhängigkeit standardmäßig aktiviert. Der Handschriftmodus wird für ein TextField gestartet, wenn innerhalb der Handschriftgrenzen der Komponente ein Stiftbewegungsevent erkannt wird.

Die Begrenzungen für die Handschrift enthalten 40 dp vertikales und 10 dp horizontales Padding um das Eingabefeld.

Eingabefeld mit umgebendem Rechteck, das die Grenzen für die Erkennung von Stylus-Bewegungsereignissen angibt.
Abbildung 2. Begrenzungen der Handschrift von TextField-Komponenten.

Das Schreiben mit Eingabestift wird für TextField-Felder nicht unterstützt, wenn der Eingabemethoden-Editor mit KeyboardType.Password angefordert wird.

Eingabeübertragung

Apps können Platzhalter-UI-Elemente anzeigen, die wie Texteingabefelder aussehen, aber tatsächlich 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 funktionales Texteingabefeld enthält, das für die Eingabe fokussiert ist.

Abbildung 3. Eingabeübertragung von statischem UI-Element an Texteingabefeld.

Delegierung der Eingabestifteingabe

Verwenden Sie die APIs zur Handschriftdelegierung, um die Eingabe von Handschrift mit einem Stylus für Platzhalter-Eingabefelder zu unterstützen (siehe handwritingDetector und handwritingHandler). Das Platzhalter-UI-Element ist so konfiguriert, dass die Handschrift an ein funktionales Eingabefeld delegiert wird. Ein Beispiel für die Implementierung finden Sie unter HandwritingDetectorSample.kt.

Der Stift-Handschriftmodus wird gestartet, wenn das funktionale Eingabefeld den Fokus erhält und ein InputConnection erstellt wird.

Abbildung 4. Delegierung der Stifteingabe von einem statischen UI-Element an ein Texteingabefeld.

Testen

Die Handschrifteingabe mit dem Stylus wird auf Geräten mit Android 14 und höher unterstützt, die über ein kompatibles Stylus-Eingabegerät und einen IME (Input Method Editor) verfügen, der die Android 14-APIs für die Handschrifteingabe mit dem Stylus unterstützt.

Wenn Sie kein Eingabegerät mit Stift haben, können Sie die Stifteingabe auf jedem Gerät mit Root-Zugriff (einschließlich Emulatoren) mit den folgenden Android Debug Bridge-Befehlen (adb) 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

Wenn Sie ein Gerät verwenden, das keinen Stylus unterstützt, können Sie die Gboard-Betaversion zum Testen verwenden.

Zusätzliche Ressourcen