Android développer - Écran de saisie
Avoir des champs de saisie explicites #
Cible : tout le monde et en particulier les personnes déficientes visuelles.
Quand : lors de la conception et lors du développement.
Description :
Lier les champs de saisie avec leurs labels apporte une vocalisation supplémentaire qui permet à l’utilisateur de comprendre ce qu'il faut remplir lorsqu’il arrive sur un champ de saisie.
Il existe 2 grandes techniques pour réaliser cette liaison :
labelFor
: permet de spécifier à une vue qu’elle est le label d’une autre vue. Cette méthode prend en paramètre l’id
de la vue que l’on labellise. On peut utiliser cette méthode avec quasiment tout type de champ de saisie. Utilisable depuis le xmlandroid:labelFor
ou le codesetLabelFor
.TextInputLayout
: permet de lier directement le champ de texte avec son label au sein d'un même layout, ce qui aura pour effet de vocaliser correctement le champ tout en le rendant plus jolie.
De plus, il est essentiel d'indiquer à l'utilisateur, pour une bonne compréhension de l'écran de saisie, les différents champs obligatoires, le format attendu, ou encore les erreurs commises sur de potentiels champs.
À vérifier :
- Les champs de saisie doivent être liés à un label si celui-ci est visible, sinon un
hint
est présent. - Les champs obligatoires sont identifiables
- Le format de données des champs "complexe" est indiqué à l'utilisateur
Exemple
<TextView
android:id="@+id/usernameLabel" ...
android:text="@string/username"
android:labelFor="@+id/usernameEntry" />
<EditText
android:id="@+id/usernameEntry" ... />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/addressLine"
android:hint="@string/adress" ... >
<com.google.android.material.textfield.TextInputEditText
... />
</com.google.android.material.textfield.TextInputLayout>
// Avec Jetpack Compose
var username by remember { mutableStateOf("") }
TextField(
value = username,
onValueChange = { username = it },
label = { Text("Field") }
)
Référence WCAG :