如何让TalkBack自动读取TextView错误信息?

2024-06-06

我目前正在使我的应用程序可访问,但我的 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(使用前将#替换为@)

如何让TalkBack自动读取TextView错误信息? 的相关文章

随机推荐