java - 滚动时移动 RecyclerView

标签 java android android-recyclerview

我有一个 RecyclerView,我想根据用户在其中滚动的程度垂直移动它。我创建了自定义 RecyclerView.OnScrollListener 来跟踪滚动的距离:

@Override
public void onScrolled(RecyclerView rView, int dx, int dy) {
  setY(dy)
}

方法 setY 改变 RecyclerView 的坐标,如下所示:

recyclerView.setY(recyclerView.getY + dy)

这种方法的问题是 RecyclerView 在改变位置时会“振动”。这意味着 View 在移动时会晃动。我认为 dy 在移动 RecyclerView 的位置时出错了。如何摆脱振动并顺利移动RecyclerView?谢谢:)

最佳答案

我发现可以通过使用填充来修改回收器 View 位置而不需要“振动”。

我编写了一个自定义布局管理器,在本例中为 GridLayoutManager,但可以是通过覆盖 scrollVerticallyBy 来实现垂直位置的任何类型:

将自定义布局管理器分配给您的回收 View :

CustomGridLayoutManager gridLayoutManager = new CustomGridLayoutManager(getContext(), 2);
    recyclerView.setLayoutManager(gridLayoutManager);

创建自定义布局管理器:

private class CustomGridLayoutManager extends GridLayoutManager{   
    CustomGridLayoutManager(Context context, int spanCount) {
        super(context, spanCount);
    }

    @Override
    public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
        recyclerView.setPadding(recyclerView.getPaddingLeft(),
                recyclerView.getPaddingTop() - dy,
                recyclerView.getPaddingRight(),
                recyclerView.getPaddingBottom());

        return super.scrollVerticallyBy(dy,recycler,state);
    }

}

这是旧的,但我希望它对某人有帮助。

关于java - 滚动时移动 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715266/

相关文章:

java - 如何使绘图默认移动,独立于 MouseEvent?

kotlin - 无法解析androidx上的引用Recyclerview.adapter

android - 多个 RecyclerView 不能在同一个 fragment 中工作

java - 在java中以不同的格式编写图像会产生不同的结果

java 试图分配较弱的访问权限错误

Java I/O 类和性能

java - 如何将现有代码分配给java类中的新按钮?

android - 如何在Android中的套接字上实现音频调用

android - ndk-gdb 错误 : device does not support the application's targetted CPU ABIs

android - 适配器中的 notifyDataSetChanged() 似乎不起作用