Accessibilité sur Android

Cette page explique comment utiliser les API d’accessibilité Android pour créer des applications en fonction de la liste de contrôle d’accessibilité. Pour obtenir d’autres API de plateforme, consultez les pages accessibilité iOS et OS X .

Description des éléments d’interface utilisateur

Android fournit une ContentDescription propriété utilisée par les API de lecture d’écran pour fournir une description accessible de l’objectif du contrôle.

La description de contenu peut être définie en C# ou dans le fichier de disposition AXML.

C#

La description peut être définie dans le code sur n’importe quelle chaîne (ou une ressource de chaîne) :

saveButton.ContentDescription = "Save data";

Disposition AXML

Dans les dispositions XML, utilisez l’attribut android:contentDescription :

<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="Save data" />

Utiliser l’indicateur pour TextView

Pour EditText les contrôles et TextView pour l’entrée de données, utilisez la Hint propriété pour fournir une description de l’entrée attendue (au lieu de ContentDescription). Lorsque du texte a été entré, le texte lui-même est « lu » au lieu de l’indicateur.

C#

Définissez la Hint propriété dans le code :

someText.Hint = "Enter some text"; // displays (and is "read") when control is empty

Disposition AXML

Dans les fichiers de disposition XML, utilisez l’attribut android:hint :

<EditText
    android:id="@+id/someText"
    android:hint="Enter some text" />

Pour associer une étiquette à un contrôle d’entrée de données, utilisez la LabelFor propriété pour

C#

En C#, définissez la LabelFor propriété sur l’ID de ressource du contrôle décrit par ce contenu (en général, cette propriété est définie sur une étiquette et fait référence à un autre contrôle d’entrée) :

EditText edit = FindViewById<EditText> (Resource.Id.editFirstName);
TextView tv = FindViewById<TextView> (Resource.Id.labelFirstName);
tv.LabelFor = Resource.Id.editFirstName;

Disposition AXML

Dans la disposition XML, utilisez la android:labelFor propriété pour référencer l’identificateur d’un autre contrôle :

<TextView
    android:id="@+id/labelFirstName"
    android:hint="Enter some text"
    android:labelFor="@+id/editFirstName" />
<EditText
    android:id="@+id/editFirstName"
    android:hint="Enter some text" />

Annoncer pour l’accessibilité

Utilisez la AnnounceForAccessibility méthode sur n’importe quel contrôle d’affichage pour communiquer un événement ou status modification aux utilisateurs lorsque l’accessibilité est activée. Cette méthode n’est pas nécessaire pour la plupart des opérations pour lesquelles la narration intégrée fournit suffisamment de commentaires, mais doit être utilisée lorsque des informations supplémentaires seraient utiles pour l’utilisateur.

Le code ci-dessous montre un exemple simple appelant AnnounceForAccessibility:

button.Click += delegate {
  button.Text = string.Format ("{0} clicks!", count++);
  button.AnnounceForAccessibility (button.Text);
};

Modification des paramètres de focus

La navigation accessible s’appuie sur le focus des contrôles pour aider l’utilisateur à comprendre les opérations disponibles. Android fournit une Focusable propriété qui peut marquer les contrôles comme spécifiquement capables de recevoir le focus pendant la navigation.

C#

Pour empêcher un contrôle d’obtenir le focus avec C#, définissez la propriété sur Focusablefalse:

label.Focusable = false;

Disposition AXML

Dans la disposition, les fichiers XML définissent l’attribut android:focusable :

<android:focusable="false" />

Vous pouvez également contrôler l’ordre de focus avec les nextFocusDownattributs , nextFocusLeft, nextFocusRightnextFocusUp , généralement définis dans la disposition AXML. Utilisez ces attributs pour vous assurer que l’utilisateur peut naviguer facilement dans les contrôles à l’écran.

Accessibilité et localisation

Dans les exemples ci-dessus, l’indicateur et la description du contenu sont définis directement sur la valeur d’affichage. Il est préférable d’utiliser des valeurs dans un fichier Strings.xml , comme suit :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="enter_info">Enter some text</string>
    <string name="save_info">Save data</string>
</resources>

L’utilisation du texte d’un fichier de chaînes est illustrée ci-dessous dans les fichiers de disposition C# et AXML :

C#

Au lieu d’utiliser des littéraux de chaîne dans le code, recherchez les valeurs traduites à partir de fichiers de chaînes avec Resources.GetText:

someText.Hint = Resources.GetText (Resource.String.enter_info);
saveButton.ContentDescription = Resources.GetText (Resource.String.save_info);

AXML

Dans la disposition, les attributs d’accessibilité XML tels que hint et contentDescription peuvent être définis sur un identificateur de chaîne :

<TextView
    android:id="@+id/someText"
    android:hint="@string/enter_info" />
<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="@string/save_info" />

L’avantage du stockage de texte dans un fichier distinct est que plusieurs traductions linguistiques du fichier peuvent être fournies dans votre application. Consultez le guide de localisation Android pour savoir comment ajouter des fichiers de chaîne localisée à un projet d’application.

Test d’accessibilité

Suivez ces étapes pour activer TalkBack et Explorer par Touch pour tester l’accessibilité sur les appareils Android.

Vous devrez peut-être installer TalkBack à partir de Google Play s’il n’apparaît pas dans Paramètres > Accessibilité.