网上找到的禁止滑动答案是在dispathchTouchEvent()方法里返回true,但是这样,其中的子控件也无法响应点击事件了。有人说重写子控件,使用getParent().requestDisallowInterceptTouchEvent()设置ViewPager不拦截点击事件。但是我有很多子控件,该如何实现这样的需求呢?
dispathchTouchEvent()
getParent().requestDisallowInterceptTouchEvent()
闭关修行中......
重寫ViewPager
@Override public boolean onTouchEvent(MotionEvent ev) { return isScrollable && super.onTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return isScrollable && super.onInterceptTouchEvent(ev); }
isScrollable就是是否允許滑動,阻止Viewpager的事件,子控制也能回應事件
重寫觸控事件取消左右滑動,注意重寫的物件是ViewPager的,而不是Activity。
mRecoverPwdVp.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { return true; } });
題主的上個問題中,我提到這個問題實際上就是對touch事件分發的理解。 google一下touch事件的分發機制,了解之後再回頭看這個問題。希望對你有幫助!
重寫ViewPager如下方法
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { return false;//不要拦截事件 事件要分发给后面的控件 } @Override public boolean onTouchEvent(MotionEvent ev) { return false;//不自己去处理事件 }
重寫ViewPager
isScrollable就是是否允許滑動,阻止Viewpager的事件,子控制也能回應事件
重寫觸控事件取消左右滑動,注意重寫的物件是ViewPager的,而不是Activity。
題主的上個問題中,我提到這個問題實際上就是對touch事件分發的理解。 google一下touch事件的分發機制,了解之後再回頭看這個問題。希望對你有幫助!
重寫ViewPager如下方法