SwipeRefreshLayout在使用的时候,一般会与Scroll view或者list view一同使用,那会他们再同时上划时就会出现冲突,如下解决办法:Scroll view为例
public void Scroll(){
mscrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
refreshLayout.setEnabled(mscrollView.getScrollY()==0);
}
});
}
listview同理,示例如下:
private AbsListView.OnScrollListener scrollListener = new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
refreshLayout.setEnabled(firstVisibleItem == 0);
}
};
重点是下面这两句话:
//Scroll view中的
refreshLayout.setEnabled(mscrollView.getScrollY()==0);
//list view中的
refreshLayout.setEnabled(firstVisibleItem == 0);