Java 将死区添加到SwiperFreshLayout Android
有没有办法让SwipeRefreshLayout有一个小死区,这样如果用户滚动到顶部并保持滚动,它就不会立即尝试下拉刷新?我希望它有一个小的死区,因为拉刷新正在干扰ListView中的视图寻呼机 如果用户滑动viewpager并在拖动过程中非常轻微地向下移动手指,它将开始执行拉刷新操作,滑动动作将丢失,viewpager将重置其位置 我试过这样做Java 将死区添加到SwiperFreshLayout Android,java,android,Java,Android,有没有办法让SwipeRefreshLayout有一个小死区,这样如果用户滚动到顶部并保持滚动,它就不会立即尝试下拉刷新?我希望它有一个小的死区,因为拉刷新正在干扰ListView中的视图寻呼机 如果用户滑动viewpager并在拖动过程中非常轻微地向下移动手指,它将开始执行拉刷新操作,滑动动作将丢失,viewpager将重置其位置 我试过这样做 mSwipeRefreshLayout.setOnTouchListener(new View.OnTouchListener() {
mSwipeRefreshLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN)
p1 = new Point((int) event.getX(), (int) event.getY());
else if(event.getAction() == MotionEvent.ACTION_MOVE)
p2 = new Point((int) event.getX(), (int) event.getY());
if(p1 != null && p2 != null && Math.abs(p1.y - p2.y) < 50) {
return true;
}
return false;
}
});
mSwipeRefreshLayout.setOnTouchListener(新视图.OnTouchListener()){
@凌驾
公共布尔onTouch(视图v,运动事件){
if(event.getAction()==MotionEvent.ACTION\u向下)
p1=新点((int)event.getX(),(int)event.getY());
else if(event.getAction()==MotionEvent.ACTION\u MOVE)
p2=新点((int)event.getX(),(int)event.getY());
如果(p1!=null&&p2!=null&&Math.abs(p1.y-p2.y)<50){
返回true;
}
返回false;
}
});
及
mSwipeRefreshLayout.setOnDragListener(新视图.OnDragListener()){
@凌驾
公共布尔onDrag(视图v,DrageEvent事件){
如果(event.getAction()==DragEvent.ACTION\u DRAG\u输入)
p1=新点((int)event.getX(),(int)event.getY());
else if(event.getAction()==DragEvent.ACTION\u拖动位置)
p2=新点((int)event.getX(),(int)event.getY());
如果(p1!=null&&p2!=null&&Math.abs(p1.y-p2.y)<50){
返回true;
}
返回false;
}
});
但是,
p2
设置不正确,似乎不确定要做什么您必须覆盖CanchildScrollup这是由构造函数中初始化的私有mTouchSlop
变量确定的。你应该能够通过反射来改变它。或者,您将需要重写onInterceptTouchEvent()
以仅在您决定应触发它时返回true
(同时调用超级实现以使其按预期工作)。
mSwipeRefreshLayout.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
if(event.getAction() == DragEvent.ACTION_DRAG_ENTERED)
p1 = new Point((int) event.getX(), (int) event.getY());
else if(event.getAction() == DragEvent.ACTION_DRAG_LOCATION)
p2 = new Point((int) event.getX(), (int) event.getY());
if(p1 != null && p2 != null && Math.abs(p1.y - p2.y) < 50) {
return true;
}
return false;
}
});