Lorsque les utilisateurs parcourent une interface utilisateur Compose avec un clavier physique, un pavé directionnel ou un sélecteur rotatif, les champs de texte participent à la navigation au clavier aux côtés d'autres cibles de focus.
Par défaut, la sélection n'est pas bloquée dans les champs de texte. Vous n'avez pas besoin d'ajouter de gestionnaires d'événements de clavier personnalisés (onKeyEvent ou onPreviewKeyEvent) pour permettre aux utilisateurs de quitter un champ de texte. Les utilisateurs peuvent toujours quitter le mode plein écran à l'aide de Maj+Tab ou en dépassant les 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 matériel.
ImeAction.Next permet de déplacer le focus vers la cible de focus suivante, par exemple.
Balayage du curseur unidimensionnel
Dans le balayage du focus unidimensionnel, le comportement de la touche Tabulation dépend de lineLimits configuré sur le champ de texte :
- Champs de texte sur une seule ligne (
TextFieldLineLimits.SingleLine) Appuyer sur la touche Tabulation permet de déplacer le focus vers la cible de focus suivante dans l'UI. - 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+Tabulation) : Appuyer sur Maj+Tabulation déplace inconditionnellement le curseur vers l'arrière vers la cible de sélection précédente dans les champs de texte sur 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 texte (caret) dans le champ de texte :
- Navigation verticale (haut / bas) :
Appuyer sur la touche
Downdéplace le curseur vers le bas, ligne par ligne. Lorsque le curseur atteint la dernière ligne, appuyer de nouveau sur la touche Bas transfère le focus vers la cible de focus adjacente 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 de focus précédente. - Navigation horizontale (gauche / droite / début / fin) : Appuyer sur les touches fléchées horizontales permet de déplacer le curseur de saisie d'un caractère à l'autre. Lorsque le curseur de saisie atteint le début ou la fin du tampon de texte, appuyer de 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 pavés directionnels sans clavier physique :
- Lorsque vous déplacez la sélection sur un champ de texte, le clavier virtuel à l'écran s'affiche automatiquement.
- 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 du champ de texte.
- Une fois le clavier logiciel fermé, appuyer sur les touches directionnelles du pavé directionnel permet de déplacer 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 mise au point
- Ordre de balayage du focus
- Grouper les cibles de focus
- Tester la navigation au clavier