RecyclerView ScrollY 始终为 0

RecyclerView ScrollY always 0

我在片段中有一个 RecyclerView。我需要通知滚动变化,所以我在 ScrollChange 事件中添加了一个回调(对应于经典 Android API 中的 SetOnScrollChangeListener):

private void RecyclerViewScrollChange(object sender, View.ScrollChangeEventArgs e)
{
    int deltaY = e.ScrollY - e.OldScrollY;
}

问题在于 deltaY 始终为零,因为 ScrollY 和 OldScrollY 始终为零。我在回收站视图的布局管理器中使用垂直线性布局,因此应该更新垂直尺寸。什么会导致这个问题?

滚动到 Y 位置正在使用

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                Log.v("onScrolled", "dx:" + dx + " dy:" + dy);

             }
        });

View.SetOnScrollChangeListener() 已添加到 API 级别 23,您可以在此处查看文档:View.SetOnScrollChangeListener()

如果您的应用程序应支持 API 级别 23 之前的版本,解决方法是使用 AddOnScrollChangedListener() 将 ScrollChangeListener 添加到 RecyclerView's `ViewTreeObserver',如下所示:

_recyclerView.ViewTreeObserver.AddOnScrollChangedListener(param);

或向 ViewTreeObserverScrollChanged 事件添加回调