安卓开发ViewPager与下拉刷新手势冲突问题??? 200
本人所用的下拉刷新上拉加载为PullToRefresh,页面里用的PullToRefreshListView,把一个Viewpager添加到ListView的头部里面,但...
本人所用的下拉刷新上拉加载为PullToRefresh,页面里用的PullToRefreshListView,把一个Viewpager添加到ListView的头部里面,但是Viewpager的左右滑动与下拉刷新冲突,刚开始可以下拉刷新,但是左右滑动切换Viewpager就是切不动,之后重写了Viewpager,在其onTouchEvent中返回getParent().requestDisallowInterceptTouchEvent(true);,可以直接解决,原理是直接不让父控件拦截子控件的触摸事件,但是此时手指点到Viewpager里面下拉没有反应,必须放在Viewpager外面才可以下拉刷新,本人向做类似于网易新闻客户端首页那样的,手指放在Viewpager上如果很偏向于下拉动作就下拉刷新,左右或偏一定角度滑动实现Viewpager左右切换,所以本人又改写了Viewpager,在其onTouchEvent中代码改为:
if(arg0.getAction() == MotionEvent.ACTION_UP){
//在up时判断是否按下和松手的坐标为一个点
//如果是一个点,将执行点击事件,这是我自己写的点击事件,而不是onclick
curP.x = arg0.getX();
curP.y = arg0.getY();
float a=Math.abs(curP.y-downP.y);
float b=Math.abs(curP.x-downP.x);
float c=a/b;
if(!(curP.y==downP.y)&&(curP.x==downP.x)){
if((c>=0)&&(c<=5.5)){
getParent().requestDisallowInterceptTouchEvent(true);
}else{
parent.requestDisallowInterceptTouchEvent(false);
}
}else{
parent.requestDisallowInterceptTouchEvent(true);
}
}
根据触摸和抬起后点的位置判断移动方式,可以解决问题了,但是Viewpager的单击事件无效了,求大神解决 解决1000分,分5次给你
有实例demo更好 展开
if(arg0.getAction() == MotionEvent.ACTION_UP){
//在up时判断是否按下和松手的坐标为一个点
//如果是一个点,将执行点击事件,这是我自己写的点击事件,而不是onclick
curP.x = arg0.getX();
curP.y = arg0.getY();
float a=Math.abs(curP.y-downP.y);
float b=Math.abs(curP.x-downP.x);
float c=a/b;
if(!(curP.y==downP.y)&&(curP.x==downP.x)){
if((c>=0)&&(c<=5.5)){
getParent().requestDisallowInterceptTouchEvent(true);
}else{
parent.requestDisallowInterceptTouchEvent(false);
}
}else{
parent.requestDisallowInterceptTouchEvent(true);
}
}
根据触摸和抬起后点的位置判断移动方式,可以解决问题了,但是Viewpager的单击事件无效了,求大神解决 解决1000分,分5次给你
有实例demo更好 展开
展开全部
自己写手势文件。省去判断左右滑动,又稳定。~
追问
怎么写手势问题,能给个demo参考下么 对写手势或者底层的一些编写不了解 谢啦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怎麽才能把奖励财富值提到200?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-09-18 · 知道合伙人软件行家
关注
展开全部
只需要在ListView中注册一个onTouch事件,并在onTouch只增加一行代码即可解决:
getParent().requestDisallowInterceptTouchEvent(true);
意思就是告诉父控件,不要处理这个touch事件,这样就不会有冲突了。
getParent().requestDisallowInterceptTouchEvent(true);
意思就是告诉父控件,不要处理这个touch事件,这样就不会有冲突了。
更多追问追答
追问
不好意思 有点忙 试了下你的方法不管用
追答
在最里面的控件中,增加getParent().requestDisallowInterceptTouchEvent(true);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询