如何将可访问性重点转移到 RecyclerView 的某些操作的第一个元素上?

How to shift accessibility focus on RecyclerView's first element on some action?

我是 android 辅助功能的新手 - TalkBack。 我知道 contentDescriptionimportantForAaccessibility 以及它们如何制作节点树等基本内容。

在我的问题中,我想将可访问性重点转移到 RecyclerView 的某些操作的第一个元素上。

通常 someView.requestFocus()someView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED) 有效。 但在 RecyclerView.

中似乎没有按预期工作

我尝试通过以下方式解决:

  1. android:accessibilityLiveRegion="polite" 但它只宣布列表在那里。但它不会出现在具有可访问性焦点的元素上。

  2. 通过聚焦适配器的第一个元素 - 但这样做不是个好主意!

除此之外,android:accessibilityTraversalAfterandroid:accessibilityTraversalBefore 也不适用于 android 中的列表视图。

someView.requestFocus()
someView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)

请求特定焦点 ViewId 并获取该节点的第一个元素。

RecyclerView 的 getChildAt() 方法对我有用。

recyclerView.getChildAt(0).requestFocus()
recyclerView.getChildAt(0).sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)