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" />
LabelFor lie des champs d’entrée avec des étiquettes
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 Focusable
false
:
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 nextFocusDown
attributs , nextFocusLeft
, nextFocusRight
nextFocusUp
, 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é.