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 用户体验的角度来看它似乎并不理想。
我们可以用项目填充 RecyclerView
,并且在绑定时,我们可以将其中一些项目标记为 'headings' 以实现可访问性。
这意味着在TalkBack的'headings'遍历模式下,用户可以直接在它们之间导航。
但是,RecyclerView
显然会在滚动时绑定和取消绑定 children。在任何时候,可能只有总标题项的一小部分加载到视图持有者中。仅在这些项目之间遍历是无益且令人困惑的。
有没有一种方法,甚至是最佳实践来提供 RecyclerView
以便我们同时满足 (a) 高性能视图回收和 (b) 对整个内容集的可访问性进行有意义的遍历?
在任何时候,并非源数据集中所有被视为标题的项目都会在 RecyclerView
中可见,只有 RecycleView.Adapter
提供的当前数据子集中的项目才会出现.在屏幕上不可见的情况下,TalkBack 等辅助功能服务无法访问其他标题,因此不会与它们交互。
从技术上讲,您可以考虑设置 custom handling of the accessibility tree,但这需要处理视图的所有辅助功能信息,而不仅仅是标题,并且可能会影响性能,尤其是对于大型数据集。无法单独覆盖航向处理。
您描述的行为是 Android 上的默认行为和预期行为,即使从屏幕 reader 用户体验的角度来看它似乎并不理想。