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);
或向 ViewTreeObserver
的 ScrollChanged 事件添加回调
我在片段中有一个 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);
或向 ViewTreeObserver
的 ScrollChanged 事件添加回调