首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取RecyclerView一次滚动一个项目,使用FocusLayoutManager

问抓取RecyclerView一次滚动一个项目,使用FocusLayoutManager
EN

Stack Overflow用户
提问于 2020-09-01 11:08:19
回答 1查看 368关注 0票数 1

我将FocusLayoutManager用于RecyclerView。一切都很好,但我一次只需要滑动一个项目。我也尝试过LinearSnapHelper和其他一些,也就是SnapHelperOneByOne,但是没有起作用。还试图修改focus布局管理器类本身,但都徒劳无功。任何帮助都将不胜感激。

  1. FocusLayoutManager链接
  2. SnapHelperOneByOne链接
  3. FocusLayoutManagerLibrary链接

注意:在分配布局管理器后,我尝试将SnapHelper附加到RecyclerView。

代码语言:javascript
复制
 val focusLayoutManager = FocusLayoutManager.Builder()
        .focusOrientation(FocusLayoutManager.FOCUS_TOP)
        .isAutoSelect(true)
        .maxLayerCount(1)
        .setOnFocusChangeListener { focusdPosition, lastFocusdPosition -> }
        .build()
myRecycler.layoutManager = focusLayoutManager

使用Snap也没有帮助,并使滚动滞后(抽搐)

代码语言:javascript
复制
val mySnapHelper = SnapHelperOneByOne()
mySnapHelper.attachToRecyclerView(myRecycler)
EN

回答 1

Stack Overflow用户

发布于 2021-01-11 09:09:14

被同一个问题缠住了。设置焦点更改监听器代码,如下所示。(在Java中找到了一项工作)

代码语言:javascript
复制
.setOnFocusChangeListener((focusdPosition, lastFocusedPosition) -> {
  if (focusdPosition == lastFocusedPosition - 1 || focusdPosition == lastFocusedPosition + 1) {
      myRecycler.stopScroll();
  }
})

这段代码将停止RecyclerView的滚动,如果当前的聚焦项在前一个聚焦项之后或之前,那么它将停止滚动。

删除SnapHelper,因为它会导致滚动动画滞后于FocusLayoutManager。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63686470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档