public class SuperRefreshLayout extends SwipeRefreshLayout {
private Rect mTouchFrame;
private int x;
private int y;
public SuperRefreshLayout(Context context) {
this(context, null);
}
public SuperRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
setColorSchemeResources(R.color.theme_blue, R.color.theme_green, R.color.theme_red);
}
public boolean canChildScrollUp() {
int count = getChildCount();
for (int i = 0; i < count; i++) {
View child = getChildAt(i);
if (canChildScrollUp(child))
return true;
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
x = (int) ev.getX();
y = (int) ev.getY();
return super.onInterceptTouchEvent(ev);
}
private boolean canChildScrollUp(View view) {
if(!inRangeOfView(view,x,y))return false;
if (view instanceof ViewGroup) {
ViewGroup group = (ViewGroup) view;
int count = group.getChildCount();
for (int i = 0; i < count; i++) {
View child = group.getChildAt(i);
if (canChildScrollUp(child))
return true;
}
}
return ViewCompat.canScrollVertically(view, -1);
}
private boolean inRangeOfView(View view,int x, int y) {
Rect frame = mTouchFrame;
if (frame == null) {
mTouchFrame = new Rect();
frame = mTouchFrame;
}
if (view.getVisibility() == VISIBLE) {
view.getHitRect(frame);
return frame.contains(x, y);
}
return false;
}
}
转载于:https://my.oschina.net/SSS555/blog/838551