5

有没有办法确定 GridView 的当前滚动偏移量或滚动位置?

View.getScrollY() // Underlying var is not updated during a scroll.

我尝试设置 OnScrollListener,但 onScroll 回调的粒度不足以满足我的目的。

这是我尝试使用 OnScrollListener 确定滚动偏移量的方法。

private int getScrollY() {
    int top = 0;
    if (mGridView.getChildCount() > 0) {
        final View firstView = mGridView.getChildAt(0);
        top = firstView.getTop();
    }
    return top;
}

这段代码的问题是向上滚动时返回的 y 偏移不准确;顶视图被回收,因此 y 偏移似乎跳跃;

有没有一种很好的方法来计算 GridView 的滚动偏移量?我似乎找不到一个好的解决方案。

4

2 回答 2

4

用这个。

public class CustomGridView extends GridView {

    public CustomGridView(Context context) {
        super(context);
    }

    public CustomGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    /* ADD THIS */
    @Override
    public int computeVerticalScrollOffset() {
        return super.computeVerticalScrollOffset();
    }
}

调用时返回一个int

于 2015-03-03T19:44:04.107 回答
1

您可以使用GridView.getFirstVisiblePosition().

http://developer.android.com/reference/android/widget/AdapterView.html#getFirstVisiblePosition()

于 2013-07-03T16:17:12.213 回答