android - 如何在不切断 View 的情况下使用 GridView/ListView 实现 SwipeRefreshLayout?

标签 android listview gridview

如果我没有像下面那样设置 OnScrollListener,ListView 中的顶部 View 在滚动到列表底部然后向上滚动后会被截断。

如下所示设置 OnScrollListener 似乎可行,但这是必需的似乎很奇怪。我希望谷歌无需设置此监听器即可解决此问题。有什么想法吗?

    mListView.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        }

        @Override
        public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            if (firstVisibleItem == 0 && visibleItemCount > 0 && absListView.getChildAt(0).getTop() >= 0) {
                mSwipeToRefreshLayout.setEnabled(true);
            } else {
                mSwipeToRefreshLayout.setEnabled(false);
            }
        }
    });
}

最佳答案

我遇到了类似的情况并覆盖了 canChildScrollUp方法为我修复了它。当您使用 SwipeRefreshLayout 时,只需使用以下内容包含 ListViewGridView ID android.R.id.list .

import android.content.Context;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;


/**
 * Date: 09/02/2014
 * @author: rax
 */
public class ScrollableSwipeRefreshLayout extends SwipeRefreshLayout {

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

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

    @Override
    public boolean canChildScrollUp() {
        // Condition to check whether scrollview reached at the top while scrolling or not
        return findViewById(android.R.id.list).canScrollVertically(-1);
    }
}

关于android - 如何在不切断 View 的情况下使用 GridView/ListView 实现 SwipeRefreshLayout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25606681/

相关文章:

android - 如何注销与重复警报关联的 BroadcastReceiver?

java - 如何从 SQLite 数据库填充的 ListView 中删除选定的行

android - 如何提高 gridview 性能 (android)

android - 如何在 Android 的 GridView 中使用预加载器

android - 如何为 GridView 的按下状态设置颜色?

Android runOnUiThread 不是异步的

android - Jetpack Compose 文本显示混淆

javascript - DOJO 1.8 移动小部件未在屏幕上呈现

Android:LinearView,左右固定大小的小部件,中间有一个灵活的小部件

java - Fragment 中的 ListView 不显示任何内容