Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将死区添加到SwiperFreshLayout Android_Java_Android - Fatal编程技术网

Java 将死区添加到SwiperFreshLayout Android

Java 将死区添加到SwiperFreshLayout Android,java,android,Java,Android,有没有办法让SwipeRefreshLayout有一个小死区,这样如果用户滚动到顶部并保持滚动,它就不会立即尝试下拉刷新?我希望它有一个小的死区,因为拉刷新正在干扰ListView中的视图寻呼机 如果用户滑动viewpager并在拖动过程中非常轻微地向下移动手指,它将开始执行拉刷新操作,滑动动作将丢失,viewpager将重置其位置 我试过这样做 mSwipeRefreshLayout.setOnTouchListener(new View.OnTouchListener() {

有没有办法让SwipeRefreshLayout有一个小死区,这样如果用户滚动到顶部并保持滚动,它就不会立即尝试下拉刷新?我希望它有一个小的死区,因为拉刷新正在干扰ListView中的视图寻呼机

如果用户滑动viewpager并在拖动过程中非常轻微地向下移动手指,它将开始执行拉刷新操作,滑动动作将丢失,viewpager将重置其位置

我试过这样做

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;
        }
    });