如果我没有像下面那样设置 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
时,只需使用以下内容包含 ListView
或 GridView
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/