Eingabe mit Eingabestift in Textfelder

Jetpack androidx.compose.material3 können Nutzer in jeder TextField-Komponente mit einem Eingabestift nutzen.

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

Wenn Sie die Eingabe per Eingabestift standardmäßig aktivieren möchten, fügen Sie die Bibliotheksabhängigkeit zur build.gradle-Datei:

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION"
    }

    kotlinOptions {
        jvmTarget = "LATEST_JVM_VERSION"
    }
}

Cool

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 Eingabe per Eingabestift ist standardmäßig für alle TextField-Komponenten aktiviert Android 14 und höher und die androidx.compose.foundation:foundation:1.7.0 Abhängigkeit. Der Handschriftmodus wird für TextField gestartet, wenn eine Eingabe per Eingabestift erfolgt innerhalb der Handschriftgrenzen der Komponente erkannt wird.

Die Handschriftgrenzen umfassen 40 dp vertikale und 10 dp horizontale Abstände Abstand um das Eingabefeld.

<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 Begrenzungen von TextField-Komponenten.

Die Eingabe per Eingabestift wird für TextField-Felder nicht unterstützt, wenn die Eingabemethode verwendet wird wird mit KeyboardType.Password angefordert.

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 handwritingDetector und handwritingHandler). Das Platzhalter-UI-Element ist konfiguriert, um Handschrift an ein funktionales Eingabefeld zu delegieren. Beispiel finden Sie unter HandwritingDetectorSample.kt

Der Handschriftmodus für Eingabestifte beginnt, erstellt ein InputConnection

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

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