重写swipRefreshLayout,实现chidView只有到达顶部的时候,才可以下拉刷新:
使用方法:直接在xml中使用MySwipeRefreshLayout
import android.content.Context;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AbsListView;
/**
* Created by Jack on 2017/7/12.
*/
public class MySwipeRefreshLayout extends SwipeRefreshLayout{
//实际需要滑动的child view
private View mScrollUpChild;
public MySwipeRefreshLayout(Context context) {
super(context);
}
public MySwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScrollUpChild(View view) {
mScrollUpChild = view;
}
@Override
public boolean canChildScrollUp() {
if (mScrollUpChild != null) {
if (android.os.Build.VERSION.SDK_INT < 14) {
if (mScrollUpChild instanceof AbsListView) {
final AbsListView absListView = (AbsListView) mScrollUpChild;
return absListView.getChildCount() > 0
&& (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0)
.getTop() < absListView.getPaddingTop());
} else {
return ViewCompat.canScrollVertically(mScrollUpChild, -1) || mScrollUpChild.getScrollY() > 0;
}
} else {
return ViewCompat.canScrollVertically(mScrollUpChild, -1);
}
}
return super.canChildScrollUp();
}
}
本文介绍了一种定制化的SwipeRefreshLayout组件——MySwipeRefreshLayout。该组件确保只有当子视图到达顶部时才能进行下拉刷新操作。通过重写canChildScrollUp方法并针对不同Android版本做了兼容处理,实现了这一功能。
741

被折叠的 条评论
为什么被折叠?



