其他分享
首页 > 其他分享> > android – 如何让TalkBack自动读取TextView错误信息?

android – 如何让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);
    }
}

解决方法:

您可以通过View提供的announceForAccessibility(“mesage”)函数显式读出错误消息

editText.setError("message")
editText.announceForAccessibility("message");

请注意,此功能已在API级别16中添加.

更新1:在EditText中更改文本时将错误消息设置为null,以防止一次又一次地读取错误消息.

 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) {

            }
        });

标签:android,accessibility,textview,talkback,android-accessibility
来源: https://codeday.me/bug/20190823/1702344.html