我花了一整天的时间来弄清楚滚动的方向,ListView
但找不到任何解决方案。我想要实现的是 ListView 的可移动标题,例如“Google Now”搜索,它在向下滚动时上升,并在您向上滚动时立即返回。
到目前为止我已经尝试过的:
实现了自定义 ListView 覆盖onScrollChanged
,但它始终为所有属性提供 0。
谁能让我走上正轨。
我花了一整天的时间来弄清楚滚动的方向,ListView
但找不到任何解决方案。我想要实现的是 ListView 的可移动标题,例如“Google Now”搜索,它在向下滚动时上升,并在您向上滚动时立即返回。
到目前为止我已经尝试过的:
实现了自定义 ListView 覆盖onScrollChanged
,但它始终为所有属性提供 0。
谁能让我走上正轨。
这称为Quick Return
模式。Roman Nurik 写了一篇博文,解释了它的工作原理,并提供了示例代码来自己实现它。你可以在这里找到:https: //plus.google.com/u/0/+RomanNurik/posts/1Sb549FvpJt
像这样的东西应该工作。您只需要缓存旧位置和偏移量并使用它来检查方向。您可能还想过滤 scrollState :
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
int position = listView.getFirstVisiblePosition();
View v = listView.getChildAt(0);
int offset = (v == null) ? 0 : v.getTop();
if (mPosition < position || (mPosition == position && mOffset < offset) {
// Scrolled up
} else {
// Scrolled down
}
mPosition = position;
mOffset = offset;
}
});