RecyclerView的ScrollY始终为0

5

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

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

问题在于deltaY始终为零,因为ScrollY和OldScrollY始终为零。我在使用recycler view的布局管理器中使用了垂直线性布局,因此应该更新垂直维度。什么原因会导致这个问题?

2个回答

0

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

如果您的应用程序需要支持API级别23之前的版本,则可以通过向RecyclerView的`ViewTreeObserver'添加ScrollChangeListener来解决问题,使用AddOnScrollChangedListener()如下:

_recyclerView.ViewTreeObserver.AddOnScrollChangedListener(param);

或者将回调函数添加到 ViewTreeObserverScrollChanged 事件中。


-1

通过使用滚动到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);

             }
        });

我注意到Xamarin的“ScrollChange”事件包装了“setOnScrollChangeListener”,但没有事件包装“addOnScrollListener”。我转换到“addOnScrollListener”方法,现在它可以正常工作了。 - Ugur
8
问题在问“scrollY”,但这个答案回答的是“dy”?为什么这个被接受为答案呢? - saiday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接