Saisie au stylet dans les champs de texte

Android 14 (niveau d'API 34) ou version ultérieure permet aux utilisateurs d'écrire dans n'importe quelle saisie de texte dans n'importe quelle application à l'aide d'un stylet. Champs de saisie de texte Android, y compris les composants EditText et Widgets de texte WebView, assistance la saisie au stylet par défaut.

Toutefois, si votre application nécessite des champs de saisie de texte personnalisés (voir la section Texte personnalisé éditeurs) ou dispose d'une mise en page complexe avec des champs de saisie de texte superposés à une surface de dessin, devez personnaliser votre application.

Figure 1 : Saisie manuscrite avec un stylet.

EditText

L'écriture manuscrite au stylet est activée par défaut pour tous les champs EditText sur Android 14 et supérieurs. Le mode Écriture manuscrite est lancé pour un EditText en cas de mouvement du stylet est détecté dans les limites de l'écriture manuscrite dans la vue.

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 de la vue. Ajustez les limites de l'écriture manuscrite avec setHandwritingBoundsOffsets() Désactiver l'écriture manuscrite avec setAutoHandwritingEnabled(false)

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

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 setHandwritingDelegatorCallback() et setIsHandwritingDelegate()). L'élément d'interface utilisateur de l'espace réservé est configuré pour déléguer l'écriture manuscrite à un élément fonctionnel champ de saisie, par exemple:

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

Le mouvement du stylet sur la vue du champ de saisie de texte de l'espace réservé appelle le rappel. Le rappel déclenche la transition de l'interface utilisateur pour afficher et sélectionner l'entrée fonctionnelle . L'implémentation du rappel est généralement la même que l'implémentation pour un écouteur de clics sur l'élément d'espace réservé. Lorsque le champ de saisie fonctionnel crée une InputConnection, le mode écriture manuscrite au stylet démarre.

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

Material Design

La com.google.android.material.search fournit la SearchBar et SearchView cours pour faciliter l'implémentation du modèle d'interface utilisateur d'espace réservé.

Les espaces réservés et les vues de recherche fonctionnelles sont associés à setUpWithSearchBar()

La délégation d'écriture manuscrite est configurée dans la bibliothèque Material de développement requis dans votre application.

Chevauchement avec des surfaces de dessin

Si votre application possède une surface de dessin avec un champ de texte superposé à la surface, vous Vous devrez peut-être désactiver l'écriture manuscrite au stylet pour permettre à l'utilisateur de dessiner. Voir setAutoHandwritingEnabled()

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