RecyclerView LinearLayoutManager-如何在某个位置阻止滚动?

时间:2018-11-12 16:22:49

标签: android android-studio android-layout

我有一个项目列表,该项目列表显示在RecyclerViewLinearLayoutManager中。 现在,我想以编程方式在特定位置“冻结”滚动,以使用户无法再手动滚动。

我可以使用linearLayoutManager.scrollToPosition(position);滚动到某个位置

编辑:它应该冻结在底部,因此用户无法向下滚动。向上滚动很好,但必须限制向下滚动。

如何禁用滚动或至少不能使用户滚动超出给定位置?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我还没有尝试使其工作。但这是我的建议:


1。您应该覆盖Import math Angle = input("Enter angle:") Force = input("Enter applied force:") X = math.cos(angle) Y = x * force Print("The x component of the applied force is", y) B = math.cos(angle) A = b * force Print("The y component of the applied force is", A)

LinearLayoutManager


2。听您的滚动事件以确定上/下滚动事件:

 linearLayoutManager = new LinearLayoutManager(context) {
   @Override
   public boolean canScrollVertically() {
     return isScrollable(); // your custom method
   }
 };

});


3。使用mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (dy > 0) { // Scrolling up } else { // Scrolling down } } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) { // Do something } else if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { // Do something } else { // Do something } } 检查它是否在阈值位置,并在linearLayoutManager.findFirstVisibleItemPosition()中向下滚动以启用/禁用滚动。