搜尋

首頁  >  問答  >  主體

android - ViewPager如何禁止滑动,并且其中的子空间仍然可以响应点击事件?

网上找到的禁止滑动答案是在dispathchTouchEvent()方法里返回true,但是这样,其中的子控件也无法响应点击事件了。有人说重写子控件,使用getParent().requestDisallowInterceptTouchEvent()设置ViewPager不拦截点击事件。但是我有很多子控件,该如何实现这样的需求呢?

阿神阿神2772 天前579

全部回覆(4)我來回復

  • 迷茫

    迷茫2017-04-17 15:50:10

    重寫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的事件,子控制也能回應事件

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 15:50:10

    重寫觸控事件取消左右滑動,注意重寫的物件是ViewPager的,而不是Activity。

    mRecoverPwdVp.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:50:10

    題主的上個問題中,我提到這個問題實際上就是對touch事件分發的理解。 google一下touch事件的分發機制,了解之後再回頭看這個問題。希望對你有幫助!

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 15:50:10

    重寫ViewPager如下方法

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return false;//不要拦截事件   事件要分发给后面的控件
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return false;//不自己去处理事件
    }

    回覆
    0
  • 取消回覆