Lorsque les utilisateurs parcourent une UI Compose à l'aide d'un clavier physique, d'un pavé directionnel ou d'un contrôleur rotatif, les champs de texte participent à la navigation par sélection, tout comme les autres cibles de sélection.
Par défaut, le curseur n'est pas bloqué dans les champs de texte. Vous n'avez pas besoin d'ajouter de gestionnaires d'événements de touche personnalisés (onKeyEvent ou onPreviewKeyEvent) pour permettre aux utilisateurs de quitter un champ de texte. Les utilisateurs peuvent toujours quitter l'éditeur en appuyant sur Maj+Tab ou en naviguant au-delà des limites du texte à l'aide des touches directionnelles.
KeyboardOptions peut être utilisé pour fournir une action de clavier virtuel intuitive qui se coordonne avec la navigation au clavier physique.
Par exemple, ImeAction.Next déplace le curseur vers la cible suivante.
Balayage du curseur unidimensionnel
Dans le balayage du focus unidimensionnel, le comportement de la touche Tab dépend de l'lineLimits configuré sur le champ de texte :
- Champs de texte sur une seule ligne (
TextFieldLineLimits.SingleLine) Appuyer sur la touche Tabulation déplace le focus vers la cible suivante dans l'interface utilisateur. - Champs de texte multilignes (
TextFieldLineLimits.MultiLine()ou par défaut) : appuyer sur la touche Tabulation insère un caractère de tabulation (\t) dans le tampon de texte au lieu de déplacer la sélection. - Navigation inverse (Maj+Tab) : appuyer sur Maj+Tab déplace systématiquement le curseur vers l'arrière, vers la cible précédente, dans les champs de texte à une ou plusieurs lignes.
// Single-line text field: Tab advances focus to the next focus target BasicTextField( state = singleLineState, lineLimits = TextFieldLineLimits.SingleLine, modifier = Modifier.fillMaxWidth() ) // Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target BasicTextField( state = multiLineState, lineLimits = TextFieldLineLimits.MultiLine(), modifier = Modifier.fillMaxWidth() )
Balayage du curseur bidimensionnel
Lorsque vous utilisez les touches fléchées (ou un pavé directionnel), les touches directionnelles déplacent d'abord le curseur de saisie dans le champ de texte :
- Navigation verticale (haut / bas) :
Appuyez sur la touche
Downpour déplacer le curseur de saisie vers le bas, ligne par ligne. Lorsque le curseur de saisie atteint la dernière ligne, appuyer de nouveau sur la touche Bas déplace le focus vers la cible adjacente située sous le champ de texte. Si vous appuyez sur la touche Haut sur la première ligne, le focus se déplace vers la cible précédente. - Navigation horizontale (gauche / droite / début / fin) : appuyer sur les touches fléchées horizontales déplace le curseur de saisie d'un caractère à l'autre. Lorsque le curseur de saisie atteint le début ou la fin de la mémoire tampon de texte, appuyer à nouveau sur la touche directionnelle transfère le focus vers la cible de focus adjacente dans cette direction.
Champs de texte sur Android TV
Sur Android TV, en utilisant des manettes avec pavé directionnel sans clavier physique :
- Le déplacement de la sélection vers un champ de texte affiche automatiquement le clavier virtuel à l'écran.
- L'utilisateur parcourt les touches du clavier virtuel à l'aide du pavé directionnel.
- Appuyer sur le bouton Retour ferme le clavier virtuel tout en conservant la sélection sur le champ de texte.
- Une fois le clavier virtuel fermé, appuyer sur les touches directionnelles du pavé directionnel déplace le focus vers les cibles de focus voisines à l'écran.
- Si vous appuyez une deuxième fois sur le bouton Retour, la navigation Retour standard du système est déclenchée.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé
- Cibles de sélection
- Ordre de balayage du focus
- Grouper les cibles de focus
- Tester la navigation par sélection