【问题标题】:stop scrolling in recyclerview停止在回收站视图中滚动
【发布时间】:2015-03-04 07:32:47
【问题描述】:

我需要修复 recyclerview 中的滚动,如果用户只删除一个可见视图,我想在可用位置显示不可见视图。我已经尝试过以下事情,

添加

android:overScrollMode="never"

关于 xml,以及

recyclerView.setHasFixedSize(false);

在 Java 上,但没有任何帮助,任何帮助都会非常明显。

谢谢。

更新

我想禁用滚动选项,用户只有在删除一个可见项后才能看到不可见项。

【问题讨论】:

标签: android android-recyclerview


【解决方案1】:

我找到了一个非常简单的解决方案,可以停止回收视图中的所有垂直滚动。这花了我大约半天的时间才弄清楚,但现在我认为它真的很简单优雅。

创建一个 java 类,使用在回收器视图中找到的所有构造函数来扩展回收器视图。在您的 xml 中确保将其更改为新的小部件。然后你必须覆盖方法:onInterceptTouchEventcomputeVerticleScrollRange。回收器视图中存在一个错误,它仍然会中断滚动事件。

所以:

public class FooRecyclerView extends RecyclerView {

private boolean verticleScrollingEnabled = true;

public void enableVersticleScroll (boolean enabled) {
    verticleScrollingEnabled = enabled;
}

public boolean isVerticleScrollingEnabled() {
    return verticleScrollingEnabled;
}

@Override
public int computeVerticalScrollRange() {

    if (isVerticleScrollingEnabled())
        return super.computeVerticalScrollRange();
    return 0;
}


@Override
public boolean onInterceptTouchEvent(MotionEvent e) {

    if(isVerticleScrollingEnabled())
        return super.onInterceptTouchEvent(e);
    return false;

}



public FooRecyclerView(Context context) {
    super(context);
}
public FooRecyclerView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
}
public FooRecyclerView(Context context, @Nullable AttributeSet attrs,        int defStyle) {
        super(context, attrs, defStyle);
    }
}

来自

RecyclerView
            android:id="@+id/task_sub_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

com.customGoogleViews.FooRecyclerView
            android:id="@+id/task_sub_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

现在,在您的代码中,您只需使用 disableVerticleScroll 方法和所有设置来控制回收站视图的状态。

【讨论】:

  • 这行得通,我想知道为什么 RecyclerView 的 stopScroll() 没有做它应该做的事情。
  • 你应该更正enableVersticleScroll(false)而不是disableVerticleScroll,也是方法名的错别字,应该是enableVerticalScroll