Nome del campo di testo modificabile
Not for use with personal data
Gli elementi di immissione di testo dovrebbero avere un nome accessibile disponibile per tecnologie assistive come TalkBack e Voice Access.
Impatto
I problemi individuati da questa regola hanno un impatto sulle persone affette da cecità.
EditText
o TextField
gli elementi dovrebbero fornire informazioni laddove il sistema operativo Android le prevede. Di conseguenza, le tecnologie assistive possono comunicare informazioni in modo prevedibile.
Conferma
- Attiva TalkBack
- Concentrati sull'elemento
- Si verificherà una delle seguenti situazioni:
- Accessibile: TalkBack annuncia il testo immesso, per e le etichette associate
Text
. - Inaccessibile: TalkBack non ha letto le informazioni di cui sopra oppure sono state annunciate nell'ordine sbagliato.
- Accessibile: TalkBack annuncia il testo immesso, per e le etichette associate
Come risolvere
Aggiungere etichette appropriate al campo di testo. Utilizzare le icone solo quando è disponibile una descrizione del contenuto.
XML
EditText editText = .......; // Role: EditText
TextView label = .......; // Role: Label
label.setLabelFor(editText.getId()); // Associate the Checkbox with its Name
Compose
@Composable
private fun LabeledTextField(modifier: Modifier = Modifier) {
val textInput = remember { mutableStateOf("") }
OutlinedTextField(
modifier = modifier,
value = textInput.value,
onValueChange = { textInput.value = it },
visualTransformation = VisualTransformation.None,
label = { Text(stringResource(R.string.address_label)) }
)
}
@Composable
private fun IconsWithDescriptionTextField(modifier: Modifier = Modifier) {
val textInput = remember { mutableStateOf("") }
OutlinedTextField(
modifier = modifier,
value = textInput.value,
onValueChange = { textInput.value = it },
label = {
Icon(
painter = painterResource(id = R.drawable.ic_location),
contentDescription = stringResource(id = R.string.address_content_description)
)
}
)
}
React Native
Associare l'elemento di testo al campo di testo corrispondente utilizzando la proprietà aria-labelledBy
:
<Text
style={{height: 70, width: 150, fontSize: 20, marginTop: 10}}
aria-label="Username"
nativeID="labelUsername">
Username
</Text>
<TextInput
style={{height: 50, width: 200, backgroundColor: 'azure', fontSize: 20}}
aria-label="input"
aria-labelledby="labelUsername"
placeholder='John'
/>