我试图检测列表视图何时滚动超过某个固定阈值(以像素为单位)(第一项的一半).不幸的是listview的getScrollY()似乎总是返回滚动位置的0个instad.有没有办法按像素获取实际的滚动位置?
这是我试图使用的代码,但据说它只返回0.
getListView().setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
Log.d("scroll", "scroll: " + getListView().getScrollY());
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == 0)
Log.d("scroll", "scrolling stopped");
}
});
Run Code Online (Sandbox Code Playgroud) 我正在使用它,但它总是返回0,即使我已滚动到列表的末尾.
我正在尝试构建自己的网格视图函数 - 扩展GridView.我唯一无法解决的是如何获得当前的滚动位置GridView.
getScrollY()总是返回0,并且onScrollListener参数只是一系列可见的子视图,而不是实际的滚动位置.
这似乎并不困难,但我在网上找不到解决方案.
这里有谁有想法?
有没有办法确定GridView的当前滚动偏移或滚动位置?
View.getScrollY() // Underlying var is not updated during a scroll.
Run Code Online (Sandbox Code Playgroud)
我已经尝试过设置一个OnScrollListener,但onScroll回调对于我的目的而言并不是很好.
以下是我尝试使用OnScrollListener确定滚动偏移的方法.
private int getScrollY() {
int top = 0;
if (mGridView.getChildCount() > 0) {
final View firstView = mGridView.getChildAt(0);
top = firstView.getTop();
}
return top;
}
Run Code Online (Sandbox Code Playgroud)
此代码的问题是向上滚动时返回的y偏移是不准确的; 顶视图被回收,因此y偏移似乎跳跃;
有没有一种很好的方法来计算GridView的滚动偏移量?我似乎无法找到一个好的解决方案.