Eingabe mit Eingabestift in Textfelder

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

Abbildung 1: Handschriftliche Eingabe mit einem Eingabestift.

Wenn Sie die Eingabe des Eingabestifts standardmäßig aktivieren möchten, fügen Sie die Bibliotheksabhängigkeit in die Datei build.gradle Ihrer App ein:

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Groovig

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

TextField

Die Eingabe des Eingabestifts ist unter Android 14 und höher und der androidx.compose.foundation:foundation:1.7.0-Abhängigkeit standardmäßig für alle TextField-Komponenten aktiviert. Der Handschriftmodus wird für TextField gestartet, wenn innerhalb der handschriftlichen Bereiche der Komponente eine Bewegung des Eingabestifts erkannt wird.

Die Handschriftgrenzen umfassen 40 dp vertikalen und 10 dp horizontalen Abstand um das Eingabefeld.

Eingabefeld mit umgebendem Rechteck, das die Grenzen für die Erkennung von Eingabestiftbewegungen angibt.
Abbildung 2. Handschriftliche Begrenzungen von TextField Komponenten.

Die Eingabe des Eingabestifts wird für TextField-Felder nicht unterstützt, wenn der Editor für Eingabemethoden mit KeyboardType.Password angefordert wird.

Eingabedelegierung

Apps können Platzhalter-UI-Elemente anzeigen, die wie Texteingabefelder aussehen, tatsächlich aber nur statische UI-Elemente ohne Texteingabefunktion sind. Ein gängiges Beispiel sind Suchfelder. Durch Tippen auf das statische UI-Element wird ein Übergang zu einer neuen UI ausgelöst, die ein funktionales Texteingabefeld für die Eingabe enthält.

Abbildung 3: Eingabedelegierung vom statischen UI-Element in ein Texteingabefeld.

Eingabedelegierung für Eingabestift

Verwenden Sie die APIs für die Handschriftdelegierung, um die Eingabe mit Eingabestift mit Eingabestiften für Platzhaltereingabefelder zu unterstützen (siehe handwritingDetector und handwritingHandler). Das Platzhalter-UI-Element ist so konfiguriert, dass Handschrift an ein funktionales Eingabefeld delegiert wird. Ein Implementierungsbeispiel finden Sie unter HandwritingDetectorSample.kt.

Der Eingabestiftmodus wird gestartet, wenn das funktionale Eingabefeld hervorgehoben und ein InputConnection erstellt wird.

Abbildung 4: Eingabedelegierung des Eingabestifts vom statischen UI-Element zum Texteingabefeld.

Testen

Die Eingabestift-Handschrift wird unter Android 14 und höher mit einem kompatiblen Eingabestift-Eingabegerät und einem Eingabemethoden-Editor (IME), der die Android 14 Stylus Handschrift-APIs unterstützt, unterstützt.

Wenn Sie kein Eingabegerät für den Eingabestift haben, simulieren Sie die Eingabe mit dem Eingabestift auf jedem Gerät mit Root-Zugriff (einschließlich Emulatoren) mit den folgenden ADB-Befehlen (Android Debug Bridge):


// 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

Verwende zum Testen die Gboard-Betaversion, wenn du ein Gerät verwendest, das keinen Eingabestift unterstützt.

Weitere Informationen