android - onScrollChanged() 从未在 Android 4.0 上触发

标签 android gridview android-4.0-ice-cream-sandwich onscroll

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

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

方法 resetAnimation() 如果它的 View 在屏幕上不可见,则重置动画。方法 checkBounds() 比较通过 getGlobalVisibleRect(r) 得到的 Rect 和代表屏幕的 Rect 来检查是否应该显示细节 View 。

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

        getViewTreeObserver().addOnScrollChangedListener(mScrollListener);

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

最佳答案

代替 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 中没有触发,但你可以试试这个......

关于android - onScrollChanged() 从未在 Android 4.0 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20833612/

相关文章:

java - 安卓:“BadTokenException:无法添加窗口;你的 Activity 在运行吗?

Android 设备插入 USB 与未插入时的行为不同

ASP.NET WebForms - 如何在 GridView 中设置标题行的 colspan?

qt - QML语言如何禁用Gridview/Listview的Flickable

android - 从 Android 3.0 及更高版本的 Web 服务获取的 InputStream 加载 ImageView 的问题

android - 如何改进我的动画并使其均匀(Jetpack Compose)?

c# - 覆盖 ASP.NET Boundfield 以支持 Dropdownlist 缺少最后一项功能

Android加速模拟器不断重启

android - Android 中用户定义的 Activity 主题

android - Android应用程式无法在较低版本(例如Gingerbread)中运作