5

我有一个 GridView 可以显示您画廊中的图像。当用户滚动列表时,有关图像的详细信息从左侧开始显示。我在为 GridView 项定义自定义布局的类中实现了这一点。它扩展了 LinearLayout

OnScrollChangedListener mScrollListener = new OnScrollChangedListener() {
    @Override
    public void onScrollChanged() {
        if (!getGlobalVisibleRect(r)) {
            resetAnimation();
        } else {
            if (checkBounds()) {
                    showInfo();
            }
            } else {
                    hideInfo();
            }

如果它的视图在屏幕上不可见,方法resetAnimation()会重置动画。方法checkBounds()将得到的 Rect 与getGlobalVisibleRect(r)和表示屏幕的 Rect 进行比较,以检查是否应显示详细信息视图。

我在onFinishInflate()中添加监听器,如下所示:

        getViewTreeObserver().addOnScrollChangedListener(mScrollListener);

现在是实际问题:在API 19、API 18、API 17 和 API 13
上一切正常,在真实设备和模拟器上都进行了测试。在 API 14(Android 4.0.1 和 4.0.2)上,onScrollChanged() 永远不会被触发,无论是在物理设备还是模拟器上。 这是一个错误还是我错过了什么?

4

1 回答 1

1

而不是OnScrollChangedListener,你可以尝试OnScrollListener...

    gridView.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            // TODO Auto-generated method stub

        }
    });

我不知道为什么它在 4.0 中没有触发,但你可以试试这个......

于 2013-12-30T05:43:29.683 回答