Android - 如何检查可扩展高度GridView中的滚动位置

时间:2014-07-19 07:27:09

标签: android gridview android-scrollview onmeasure

我在片段中使用expandable height GridView。它是默认的GridView,具有重写的onMeasure方法。这允许在GridView内部ScrollView使用此GridView包装片段。

boolean expanded = false;    
public boolean isExpanded() {
    return expanded;
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    if (isExpanded()) {
        // Calculate entire height by providing a very large height hint.
        // View.MEASURED_SIZE_MASK represents the largest height possible.
        int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);

        ViewGroup.LayoutParams params = getLayoutParams();
        params.height = getMeasuredHeight();
    } else {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}

但我在检查屏幕上显示GridView的哪些项目时遇到问题。所有可以帮助我不使用被覆盖的onMeasure的方法,因为GridView创建时一次显示所有项目。

getScrollY() - 总是返回0,因为GridView已经通过覆盖onMeasure进行了扩展,并且不会滚动。

onScrollListener's参数只是从0到最后一项的一系列可见子视图,因为所有这些参数都显示(通过onMeasure),而不是实际的滚动位置。

0 个答案:

没有答案