RecyclerView ScrollY始终为0

时间:2018-03-06 14:04:10

标签: android android-recyclerview xamarin.android recyclerview-layout

我在片段中有一个RecyclerView。我需要收到有关滚动更改的通知,因此我添加了对ScrollChange事件的回调(对应于传统Android API中的SetOnScrollChangeListener):

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

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

2 个答案:

答案 0 :(得分:1)

API级别23中添加了

View.SetOnScrollChangeListener(),您可以在文档中看到:View.SetOnScrollChangeListener()

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

_recyclerView.ViewTreeObserver.AddOnScrollChangedListener(param);

或向ViewTreeObserver ScrollChanged事件添加回调

答案 1 :(得分:0)

滚动到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);

             }
        });