如何解决对自定义Android View的对讲支持
我有一个自定义Android视图,该视图由许多TextView和EditText组成。在“视图”上没有进行任何辅助功能的情况下,我遇到的默认对讲行为是将焦点放在第一个EditText上,然后大声读取其内容,然后从那里继续大声读出每个EditText的内容。
我希望当自定义view最初以可访问性焦点导航到时,它会朗读整个View组并给出合理的描述(此描述必须是动态的,因为每个EditText中出现的文本都可能会更改)。
所以我已经通读了Making custom views more accessible,但仍然遇到问题。
setFocusable(true);
setFocusableInTouchMode(false);
setContentDescription("This is a content description");
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
我将focusableInTouchMode设置为false是因为我仅出于可访问性的目的而希望此视图可聚焦(尽管坦率地说,我并不认为这是实现此目的的正确方法)。
我还为该视图提供了虚假的内容描述,以尝试简单地听到TalkBack读取的自定义内容,但我还没有听到大声朗读的描述。
我已覆盖以下四种可访问性方法:
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
return super.dispatchPopulateAccessibilityEvent(event);
}
通过日志记录,我发现由于某种原因super.dispatchPopulateAccessibilityEvent(event)总是返回false。
@Override
public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
super.onPopulateAccessibilityEvent(event);
event.getText().add("on populate accessibility event");
}
@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
}
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(FooBar.class.getCanonicalName());
}
在进行了上述更改之后,我发现可以对自定义view赋予可访问性焦点,但是这种情况下,即使在EditTexts之后,也只能朗读TextViews的内容(静态内容),而不是大声朗读EditTexts。已被填充。
有没有人可以给我一些技巧,以使我了解如何以自定义视图的方式运行我的自定义视图?我有点Android初学者,所以如果不能从文档中获得尽可能多的信息,请原谅我。
如果有帮助,我也很乐意提供有关View本身的更多详细信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。