Android Recyclerview对讲问题

aka*_*h89 6 android talkback android-recyclerview

我有一个Android Recyclerview,其中有更多行的项目。

从某种意义上说,Recyclerview包含
第1行->> TextView,在该行下方还有一个textview

第2行->> TextView,在其下又一个textview

问题是,每当我打开“对讲”时,它都会一次性读取整个Recyclerview,这是不期望的,这取决于重点项目一次应读取一次。

预期的行为是-将d-pad移到Focus上时,读取Focus上的组件。

有帮助吗?

Alg*_*yan 10

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

android:importantForAccessibility="no"
Run Code Online (Sandbox Code Playgroud)

...对你的RecyclerView。这将禁用与列表相关的所有本机可访问性功能,包括ACTION_SCROLL_FORWARD/ ACTION_SCROLL_BACKWARD动作(Accessibility Source),以及将“ In List” /“ Out of List”上下文附加到可访问性声明的功能。

相反,您应该设置...

android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)

...在列表项的根目录上,这将使它们在可访问性用户导航到它们时分别获得关注。

  • 有趣的是,我刚刚测试了您的要求,然后使用对讲功能就可以了!另外,“ focusable”和“ focusableInTouchMode”与“话语提示”打开时设备的行为完全无关。给定此上下文中的焦点,让TextView获得焦点几乎没有意义。 (2认同)

Chr*_*sCM 6

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

这应该可以纠正这种情况。

android:importantForAccessibility="no" //Or "auto"
Run Code Online (Sandbox Code Playgroud)

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

编辑:

将“否”更改为“自动”。实际上,我们只是希望它不是“是”,这是造成不良行为的价值。Auto 在现代设备上使用 Switch Control 表现更好。

对此进行了一段时间的调查,我认为这里没有与 Android 操作系统版本无关的解决方案。Android API 已经在太多版本中多次更改了它们对可聚焦性与可访问性可聚焦性的定义。