当nestedscrollview 中的recyclerview 滚动时,对讲焦点转到工具栏项

Posted

技术标签:

【中文标题】当nestedscrollview 中的recyclerview 滚动时,对讲焦点转到工具栏项【英文标题】:Talkback focus goes to toolbar items when recyclerview within nestedscrollview is scrolled 【发布时间】:2020-08-18 19:15:00 【问题描述】:

我的布局中有一个嵌套滚动视图,其中包含少量文本、按钮和回收视图。

当对讲开启时,我可以遍历所有元素。但我面临一个问题。当我的水平 recyclerview 滚动然后我滑动以听到对讲时,焦点将移动到工具栏的第一项。然后我需要遍历所有可见项目以到达水平滚动视图滚动项目。

这个问题只出现在nestedscrollview 中的recyclerviews。

我在布局中的nestedscrollview是这样添加的:

<androidx.core.widget.NestedScrollView
        android:layout_
        android:layout_>

        //my contents

</androidx.core.widget.NestedScrollView>

我在布局中的recyclerview是这样添加的:

<LinearLayout
     android:id="@+id/photosLL"
     android:layout_
     android:layout_
     android:orientation="vertical">

     <androidx.recyclerview.widget.RecyclerView
          android:id="@+id/photosRV"
          android:layout_
          android:layout_
          tools:listitem="@layout/list_item_photo" />
</LinearLayout>

这是预期的行为,或者如果它是一个问题,如何解决?

【问题讨论】:

关于此事的任何更新?你检查我的答案了吗? 【参考方案1】:

这是我最后提供的第一个链接的引用,我认为这与您的问题有关:

“在触摸模式下,没有焦点,也没有选择。用户进入触摸模式后,网格列表中的任何选定项目都将变为未选中。同样,当用户进入触摸模式时,任何有焦点的小部件都将变为未选中。”

我认为你需要在你的 recyclerView 上设置这些属性:

 android:focusableInTouchMode="true"
 android:descendantFocusability="beforeDescendants"

如果您正在寻找更多信息,请阅读:

Difference between focusable and focusableInTouchMode

explain descendantFocusability = afterDescendants

【讨论】:

第一次成功。但随后来回移动是跳过我的回收站视图中的第一个和最后一个元素。有什么线索吗? 你能解释一下吗?视图是否重新创建?如果不是,则不应从顶部重复。它保存了最后一个焦点视图。 我有一个标题“画廊”,在 recyclerview 内的那组图像下方。在 recyclerview 下面我有其他文本视图。当对讲打开时,向前滑动时,首先焦点转到图库,然后是每个图像视图,然后是文本视图。但是从 textview 回到 imageviews 并不会关注最后一张图像。焦点将转到倒数第二张图像。再次向后滑动会遍历后面的图像,当我到达第二张图像然后向后移动时,焦点将转到“图库”标题。

以上是关于当nestedscrollview 中的recyclerview 滚动时,对讲焦点转到工具栏项的主要内容,如果未能解决你的问题,请参考以下文章

NestedScrollView 中的 ListView 无法正确显示

当尝试从带有点击事件的视图滚动时,滚动在 NestedScrollView 中不起作用

Espresso,当 NestedScrollView 或 RecyclerView 在 CoordinatorLayout 中时滚动不起作用

如何禁用 NestedScrollView&CollapsingToolbarLayout 的滚动,例如当下面没有更多内容时?

Flutter之NestedScrollView与ListView联动的问题

NestedScrollview 内的 RecyclerView 滚动不顺畅