Как заставить TalkBack автоматически прочитать сообщение об ошибке TextView?
В настоящее время я делаю свое приложение доступным, и у меня возникают проблемы с моими EditTexts:
В каждом EditText пользовательский ввод проверяется в какой-то момент (например, после нажатия кнопки), и если ввод неправильный, я показываю ошибку, используя editText.setError("message")
, Проблема в том, что если TalkBack включен, он не будет автоматически фокусироваться и читать ошибку. Кроме того, поскольку я не могу получить представление об ошибке, я не могу попросить TalkBack сфокусировать ее через sendAccessibilityEvent
,
Буду признателен за любые идеи о том, как решить эту проблему, все еще используя editText.setError()
,
Редактировать 1 Добавлен код для решения @Abhishek V:
public class BaseEditText extends EditText {
...
...
@Override
public void setError(CharSequence error) {
super.setError(error);
announceForAccessibility(error);
}
}
1 ответ
Вы можете явно прочитать сообщение об ошибке через announceForAccessibility("mesage")
функция предоставлена View
editText.setError("message")
editText.announceForAccessibility("message");
Обратите внимание, что эта функция была добавлена на уровне API 16.
обновление 1: установите сообщение об ошибке на null
когда текст изменяется в EditText
чтобы предотвратить чтение сообщения об ошибке снова и снова.
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
editText.setError(null);
}
@Override
public void afterTextChanged(Editable editable) {
}
});