onScrollChanged()从未在Android 4.0上启动过

mil*_*saw 5 android gridview onscroll android-4.0-ice-cream-sandwich

我有一个GridView,可以显示您图库中的图像.当用户滚动列表时,有关图像的详细信息将从左侧生成动画.我在定义GridView项的自定义布局的类中实现了它.它扩展了LinearLayout.

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

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

我在onFinishInflate()中添加了这样的监听器:

        getViewTreeObserver().addOnScrollChangedListener(mScrollListener);
Run Code Online (Sandbox Code Playgroud)

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

Gop*_*opi 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

        }
    });
Run Code Online (Sandbox Code Playgroud)

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