我将FocusLayoutManager用于RecyclerView。一切都很好,但我一次只需要滑动一个项目。我也尝试过LinearSnapHelper和其他一些,也就是SnapHelperOneByOne,但是没有起作用。还试图修改focus布局管理器类本身,但都徒劳无功。任何帮助都将不胜感激。
注意:在分配布局管理器后,我尝试将SnapHelper附加到RecyclerView。
val focusLayoutManager = FocusLayoutManager.Builder()
.focusOrientation(FocusLayoutManager.FOCUS_TOP)
.isAutoSelect(true)
.maxLayerCount(1)
.setOnFocusChangeListener { focusdPosition, lastFocusdPosition -> }
.build()
myRecycler.layoutManager = focusLayoutManager使用Snap也没有帮助,并使滚动滞后(抽搐)
val mySnapHelper = SnapHelperOneByOne()
mySnapHelper.attachToRecyclerView(myRecycler)发布于 2021-01-11 09:09:14
被同一个问题缠住了。设置焦点更改监听器代码,如下所示。(在Java中找到了一项工作)
.setOnFocusChangeListener((focusdPosition, lastFocusedPosition) -> {
if (focusdPosition == lastFocusedPosition - 1 || focusdPosition == lastFocusedPosition + 1) {
myRecycler.stopScroll();
}
})这段代码将停止RecyclerView的滚动,如果当前的聚焦项在前一个聚焦项之后或之前,那么它将停止滚动。
删除SnapHelper,因为它会导致滚动动画滞后于FocusLayoutManager。
https://stackoverflow.com/questions/63686470
复制相似问题