Android 14 (niveau d'API 34) ou version ultérieure permet aux utilisateurs d'écrire dans n'importe quel champ de saisie de texte de n'importe quelle application à l'aide d'un stylet. Les champs de saisie de texte Android, y compris les composants EditText
et les widgets de texte WebView
, sont compatibles par défaut avec la saisie au stylet.
Toutefois, si votre application nécessite des champs de saisie de texte personnalisés (voir Éditeurs de texte personnalisés) ou si sa mise en page est complexe avec des champs de saisie de texte superposés à une surface de dessin, vous devrez personnaliser votre application.
EditText
Sur Android 14 ou version ultérieure, l'écriture manuscrite au stylet est activée par défaut pour tous les champs EditText
. Le mode Écriture manuscrite est activé pour un EditText
lorsqu'un événement de mouvement du stylet est détecté dans les limites de l'écriture manuscrite de la vue.
Les limites de l'écriture manuscrite incluent une marge intérieure verticale de 40 dp et une marge intérieure horizontale de 10 dp autour de la vue. Ajustez les limites de l'écriture manuscrite avec setHandwritingBoundsOffsets()
.
Désactivez l'écriture manuscrite avec setAutoHandwritingEnabled(false)
.
Délégation d'entrée
Les applications peuvent afficher des éléments d'interface utilisateur d'espace réservé qui semblent être des champs de saisie de texte, mais qui ne sont en fait que des éléments d'interface utilisateur statiques sans fonctionnalité de saisie de texte. Les champs de recherche en sont un exemple courant. Appuyer sur l'élément d'interface utilisateur statique déclenche une transition vers une nouvelle interface utilisateur contenant un champ de saisie de texte fonctionnel destiné à la saisie.
Délégation de saisie au stylet
Utilisez les API de délégation d'écriture manuscrite pour permettre la saisie d'écriture manuscrite au stylet pour les champs de saisie d'espace réservé (voir setHandwritingDelegatorCallback()
et setIsHandwritingDelegate()
). L'élément d'interface utilisateur d'espace réservé est configuré pour déléguer l'écriture manuscrite à un champ de saisie fonctionnel, 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 le champ de saisie fonctionnel et le sélectionner. L'implémentation du rappel est généralement identique à celle d'un écouteur de clics sur l'élément d'espace réservé. Lorsque le champ de saisie fonctionnel crée une InputConnection
, le mode d'écriture manuscrite au stylet démarre.
Material Design
La bibliothèque com.google.android.material.search
fournit les classes SearchBar
et SearchView
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 sans nécessiter de développement supplémentaire dans votre application.
Superposition avec des surfaces de dessin
Si votre application comporte une surface de dessin avec un champ de texte superposé, vous devrez peut-être désactiver l'écriture manuscrite au stylet pour permettre à l'utilisateur de dessiner. Consultez setAutoHandwritingEnabled()
.
Test
L'écriture manuscrite au stylet est compatible avec les appareils Android 14 ou version ultérieure dotés d'un périphérique d'entrée de stylet compatible et d'un éditeur de mode de saisie (IME) compatible avec les API d'écriture manuscrite au stylet Android 14.
Si vous n'avez pas de périphérique d'entrée de stylet, simulez la saisie au stylet sur n'importe quel appareil disposant d'un accès racine (y compris les émulateurs) à l'aide des commandes Android Debug Bridge (adb) suivantes:
// 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 les tests si vous utilisez un appareil non compatible avec le stylet.
Ressources supplémentaires
- Material Design — Champs de texte
- Éditeurs de texte personnalisés