Saisie au stylet dans les champs de texte

Le Jetpack androidx.compose.material3 permet aux utilisateurs d'écrire dans n'importe quel composant TextField dans n'importe quelle application avec un stylet.

Figure 1 : Saisie manuscrite avec un stylet.

Pour activer la saisie au stylet par défaut, ajoutez la dépendance de la bibliothèque au fichier Fichier build.gradle:

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

L'écriture manuscrite au stylet est activée par défaut pour tous les composants TextField Android 14 ou version ultérieure, androidx.compose.foundation:foundation:1.7.0 la dépendance. Le mode Écriture manuscrite est lancé pour un TextField en cas de mouvement du stylet est détecté dans les limites d'écriture manuscrite du composant.

Les limites de l'écriture manuscrite incluent une marge intérieure verticale de 40 dp et une marge intérieure de 10 dp une marge intérieure autour du champ de saisie.

Champ de saisie entouré d'un rectangle indiquant les limites de détection des événements de mouvement du stylet.
Figure 2 : Limites d'écriture manuscrite des composants TextField.

L'écriture manuscrite au stylet n'est pas disponible pour les champs TextField lorsque le mode de saisie éditeur est demandé avec KeyboardType.Password.

Délégation de l'entrée

Les applications peuvent afficher des éléments d'interface utilisateur réservés qui semblent être des champs de saisie de texte, mais sont en fait de simples éléments d'UI statiques sans capacité de saisie de texte. Réseau de Recherche sont un exemple courant. Appuyer sur l'élément statique d'interface utilisateur déclenche une transition vers une nouvelle UI contenant un champ de saisie de texte fonctionnel.

Figure 3 : Délégation d'entrée d'un élément d'interface utilisateur statique vers un champ de saisie de texte.

Délégation de saisie au stylet

Utilisez les API de délégation d'écriture manuscrite pour prendre en charge l'écriture manuscrite au stylet pour des espaces réservés pour les champs de saisie (voir handwritingDetector et handwritingHandler). L'espace réservé pour l'élément d'UI est configuré pour déléguer l'écriture manuscrite à un champ de saisie fonctionnel. Exemple : implémentation, consultez HandwritingDetectorSample.kt

Le mode d'écriture manuscrite au stylet démarre lorsque le champ de saisie fonctionnel est sélectionné et crée une InputConnection

Figure 4 : Délégation de saisie au stylet d'un élément d'interface utilisateur statique à un champ de saisie de texte.

Tests

L'écriture manuscrite au stylet est compatible avec les appareils Android 14 et versions ultérieures disposant d'un un périphérique d'entrée compatible avec un stylet et un mode de saisie éditeur (IME) qui permet est compatible avec les API d'écriture manuscrite au stylet Android 14.

Si vous n'avez pas de périphérique d'entrée au stylet, simulez la saisie avec le stylet sur n'importe quel appareil. avec un accès root (émulateurs compris) à l'aide d'Android Debug Bridge (adb) :


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

Utilisez la version bêta de Gboard pour effectuer des tests si vous utilisez un appareil non compatible avec le stylet.

Ressources supplémentaires