Android Recyclerview 反馈问题

Android Recyclerview Talkback issue

我有一个 Android Recyclerview,它有更多行项目。

在某种意义上 Recyclerview 包括
第 1 行 ->> TextView,在另一个 textview 下面

第 2 行 ->> TextView,在那个下方还有一个 textview

问题是,每当我打开 Talkback 时,它会一次性读出整个 Recyclerview,这不是预期的,它应该根据焦点项目一次读取一个项目。

预期的行为是 - 当方向键移到焦点上时读取焦点上的组件。

有帮助吗??

在构建过程的某个时刻,您的 Recycler View 似乎被标记为 importantForAccessibility。当容器视图被标记为对可访问性很重要时,它会收集该容器内的所有信息并将其作为内容描述公布。

这应该可以解决这个问题。

android:importantForAccessibility="no" //Or "auto"

如果您在代码中没有任何其他设置,这似乎是您 Android 风格的错误。这当然不是理想的默认行为。

编辑:

已将 "no" 更改为 "auto"。实际上,我们只是希望它不是 "yes",这是造成不良行为的价值。 Auto 在现代设备上使用 Switch Control 时表现更好。

断断续续地对此进行了一段时间的调查,我认为这里没有 Android OS 版本不可知的解决方案。 Android API 已经在太多版本中多次更改了 Focusability 与 Accessibility Focusability 的定义。

与 ChrisCM 的回答相反,您不应设置...

android:importantForAccessibility="no"

... 在你的 RecyclerView 上。这将 禁用与您的列表相关的所有本机可访问性 功能,包括 ACTION_SCROLL_FORWARD / ACTION_SCROLL_BACKWARD 操作 (Accessibility Source),以及附加 "In List" / "Out of List" 可访问性公告的上下文。

相反,您应该设置...

android:focusable="true"
android:focusableInTouchMode="true"

...在您的列表项的根布局上,这将使它们能够在可访问性用户导航到它们时单独获得焦点。