我目前正在使我的应用程序可访问,但我的 EditTexts 遇到问题:
在每个 EditText 中,用户的输入都会在某个时刻(例如按下按钮后)进行验证,如果输入无效,我会使用以下命令显示错误editText.setError("message")
。问题是,如果 TalkBack 打开,它不会自动聚焦并读取错误。另外,由于我无法获取错误的视图,因此我无法要求 TalkBack 通过以下方式将其聚焦sendAccessibilityEvent
.
我将不胜感激关于如何在仍然使用时解决此问题的任何想法editText.setError()
.
Edit 1添加了 @Abhishek V 解决方案的代码:
public class BaseEditText extends EditText {
...
...
@Override
public void setError(CharSequence error) {
super.setError(error);
announceForAccessibility(error);
}
}
您可以通过以下方式显式读出错误消息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) {
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)