Assurer la compatibilité avec la navigation via le clavier

En plus des modes de saisie, comme l'affichage à l'écran, claviers : Android est compatible avec les claviers physiques connectés à l'appareil. A clavier offre un mode pratique pour la saisie de texte et un moyen pour les utilisateurs de à naviguer et à interagir avec votre application. Bien que la plupart des appareils portables tels que les téléphones utilisent l'écran tactile comme mode principal d'interaction, les tablettes et autres appareils sont populaires et de nombreux utilisateurs aiment attacher des accessoires pour clavier à de l'IA générative.

Étant donné que de plus en plus d'appareils Android offrent ce type d'expérience, il est important que vous optimisez votre application pour permettre une interaction via un clavier. Ce décrit comment améliorer la navigation à l'aide d'un clavier.

<ph type="x-smartling-placeholder">

Tester votre application

Les utilisateurs peuvent peut-être déjà naviguer dans votre application à l'aide d'un clavier, car le système Android active la plupart des comportements nécessaires par défaut.

Tous les widgets interactifs fournis par le framework Android, tels que Button et EditText – sont sélectionnables. Cela signifie que les utilisateurs peuvent naviguer avec des appareils de commande tels qu'un pavé directionnel ou clavier. Chaque widget s'illumine ou modifie son apparence lorsqu'il est ciblée sur les entrées.

Pour tester votre application, procédez comme suit:

  1. Installez votre application sur un appareil équipé d'un clavier physique.

    Si vous n'avez pas de périphérique physique doté d'un clavier, connectez un appareil Bluetooth clavier ou un clavier USB.

    Vous pouvez également utiliser Android Emulator:

    1. Dans AVD Manager, cliquez sur New Device (Nouvel appareil) ou sélectionnez un profil existant, puis cliquez sur Clone (Cloner).
    2. Dans la fenêtre qui s'affiche, vérifiez que les options Clavier et DPad est activé.
  2. Pour tester votre application, utilisez uniquement la touche Tabulation pour parcourir les UI. Assurez-vous que chaque commande d'interface utilisateur est sélectionnée comme prévu.

    Recherchez tous les cas où le curseur se déplace de manière inattendue de la même manière.

  3. Recommencez depuis le début de votre application et naviguez dans l'interface utilisateur à l'aide de commandes de direction comme les touches fléchées du clavier. De chaque sélectionnable dans votre interface utilisateur, appuyez sur les touches Haut, Bas, Gauche et Droite.

    Recherchez tous les cas où le curseur se déplace de manière inattendue de la même manière.

Si vous rencontrez des cas où la navigation avec la touche Tabulation ou les commandes de direction ne fonctionnent pas comme prévu, spécifiez l'emplacement de la mise au point dans votre mise en page, comme indiqué dans les sections suivantes.

Gérer la navigation par onglet

Lorsqu'un utilisateur parcourt votre application à l'aide de la touche Tabulation du clavier, la le système transmet le focus d'entrée entre les éléments en fonction de l'ordre dans lequel ils dans la mise en page. Si vous utilisez une mise en page relative, par exemple, et que l'ordre d'éléments à l'écran est différent de l'ordre dans le fichier, alors vous vous devrez peut-être spécifier manuellement l'ordre de sélection.

Par exemple, dans la mise en page suivante, deux boutons sont alignés à droite et un champ de texte est aligné à gauche du second bouton. Pour réussir du premier bouton vers le champ de texte, puis vers le deuxième bouton, la mise en page doit définir explicitement l'ordre de sélection de chacun des éléments avec le paramètre android:nextFocusForward .

<androidx.constraintlayout.widget.ConstraintLayout ...>
    <Button
        android:id="@+id/button1"
        android:nextFocusForward="@+id/editText1"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        ... />
    <Button
        android:id="@+id/button2"
        android:nextFocusForward="@+id/button1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/button1"
        ... />
    <EditText
        android:id="@id/editText1"
        android:nextFocusForward="@+id/button2"
        app:layout_constraintBottom_toBottomOf="@+id/button2"
        app:layout_constraintRight_toLeftOf="@id/button2
        ...  />
    ...
</androidx.constraintlayout.widget.ConstraintLayout>

Au lieu de passer de button1 à button2, puis editText1, il se déplace de manière appropriée selon l'apparence à l'écran: de button1 à editText1, puis button2.

Gérer la navigation directionnelle

Les utilisateurs peuvent également naviguer dans votre application à l'aide des touches fléchées du clavier, ce qui se comporte de la même manière que lors de la navigation avec un pavé directionnel ou un trackball. Le système fournit une "hypothèse la plus probable" pour la vue à privilégier dans une direction donnée en fonction de la disposition des vues à l'écran. Cependant, il arrive que le système devinez mal.

Si le système ne sélectionne pas la vue appropriée lors de la navigation dans une direction donnée, spécifiez la vue qui doit être sélectionnée à l'aide des éléments suivants : Attributs:

Chaque attribut désigne la vue suivante à activer lorsque l'utilisateur navigue dans cette direction, comme spécifié par l'ID de la vue. comme indiqué dans la section l'exemple suivant:

<Button
    android:id="@+id/button1"
    android:nextFocusRight="@+id/button2"
    android:nextFocusDown="@+id/editText1"
    ... />
<Button
    android:id="@id/button2"
    android:nextFocusLeft="@id/button1"
    android:nextFocusDown="@id/editText1"
    ... />
<EditText
    android:id="@id/editText1"
    android:nextFocusUp="@id/button1"
    ...  />
<ph type="x-smartling-placeholder">

Ressources supplémentaires

Consultez les ressources associées suivantes :