如果无法滚动,如何仅在RecyclerView上禁用过卷效果?

and*_*per 16 android overscroll android-recyclerview

背景

有时,recyclelerView的所有项目都已对用户可见.

在这种情况下,用户看到过度滚动效果并不重要,因为实际滚动和查看更多项目是不可能的.

问题

我知道为了在RecyclerView上禁用过度滚动效果,我可以使用:

recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
Run Code Online (Sandbox Code Playgroud)

但无论如何都无法滚动,我无法找到何时触发此功能.

这个问题

如何确定所有项目完全可见并且用户无法真正滚动?

如果它有助于假设任何东西,我总是使用LinearLayoutManager(垂直和水平)为RecyclerView.

Bla*_*elt 11

你可以OVER_SCROLL_IF_CONTENT_SCROLLS尝试一下.根据文件

仅当内容足够大才能有意义地滚动时,允许用户过度滚动此视图,前提是它是可以滚动的视图.

或者您可以检查是否有足够的项目来触发滚动并启用/禁用过滚动模式,具体取决于它.例如

boolean notAllVisible = layoutManager.findLastCompletelyVisibleItemPosition() < adapter.getItemCount() - 1;
if (notAllVisible) {
   recyclerView.setOverScrollMode(allVisible ? View.OVER_SCROLL_NEVER);
}
Run Code Online (Sandbox Code Playgroud)

  • 对于那些想知道为什么View.OVER_SCROLL_IF_CONTENT_SCROLLS不起作用的人.https://issuetracker.google.com/issues/37076456 (6认同)

Ket*_*ani 8

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:overScrollMode="never"/>
Run Code Online (Sandbox Code Playgroud)

只需添加android:overScrollMode="never"XML即可