首页 > 解决方案 > 如何将可访问性焦点转移到 RecyclerView 在某些操作上的第一个元素上?

问题描述

我是 android 可访问性的新手 - TalkBack. 我知道基本的东西contentDescriptionimportantForAaccessibility以及它们如何制作节点树等。

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

通常someView.requestFocus()someView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)工作。但它似乎没有按预期工作RecyclerView

我试图通过以下方式解决它:

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

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

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

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

标签: androidandroid-recyclerviewaccessibilitytalkbackandroid-accessibility

解决方案


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

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

推荐阅读