RecyclerView中lazy-loadedchildren的RecyclerView无障碍遍历

RecyclerView accessibility traversal for lazy-loaded children in RecyclerView

我们可以用项目填充 RecyclerView,并且在绑定时,我们可以将其中一些项目标记为 'headings' 以实现可访问性。

这意味着在TalkBack的'headings'遍历模式下,用户可以直接在它们之间导航。

但是,RecyclerView 显然会在滚动时绑定和取消绑定 children。在任何时候,可能只有总标题项的一小部分加载到视图持有者中。仅在这些项目之间遍历是无益且令人困惑的。

有没有一种方法,甚至是最佳实践来提供 RecyclerView 以便我们同时满足 (a) 高性能视图回收和 (b) 对整个内容集的可访问性进行有意义的遍历?

在任何时候,并非源数据集中所有被视为标题的项目都会在 RecyclerView 中可见,只有 RecycleView.Adapter 提供的当前数据子集中的项目才会出现.在屏幕上不可见的情况下,TalkBack 等辅助功能服务无法访问其他标题,因此不会与它们交互。

从技术上讲,您可以考虑设置 custom handling of the accessibility tree,但这需要处理视图的所有辅助功能信息,而不仅仅是标题,并且可能会影响性能,尤其是对于大型数据集。无法单独覆盖航向处理。

您描述的行为是 Android 上的默认行为和预期行为,即使从屏幕 reader 用户体验的角度来看它似乎并不理想。