我需要在recyclerview中修改滚动,如果用户只删除其中一个可见视图,我想在可用位置显示不可见的视图。我试过了以下的事情,
加入
android:overScrollMode="never"
on xml,
recyclerView.setHasFixedSize(false);
关于Java,但没有任何帮助,任何帮助都将非常值得注意。
感谢。
更新
我想禁用滚动选项,用户只能在删除其中一个可见项目后才能看到隐藏项目。
答案 0 :(得分:5)
我找到了一个非常简单的解决方案,可以在循环视图中停止所有垂直滚动。这让我花了大约半天的时间来弄清楚,但现在我认为它非常简单和优雅。
创建一个java类,它使用recycleler视图中的所有构造函数扩展recycleler视图。在您的xml中确保将其更改为新窗口小部件。然后,您必须覆盖方法:onInterceptTouchEvent
和computeVerticleScrollRange
。回收站视图中存在一个错误,它仍然会中断滚动事件。
这样:
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
方法和所有设置来控制回收站视图的状态。