我自己写的FrameLayout,内部的view中包含42个TextViewpublic boolean onInterceptTouchEvent(MotionEvent ev) {       int action = ev.getAction();
       switch(action){
       case MotionEvent.ACTION_DOWN:
           return true;
           //这个返回值直接影响后续的处理,true的话对整个view的滑动支持良好但子view的click等处理被拦截;
                                           false的话支持对子view的click处理等但不支持view的滑动操作
       case MotionEvent.ACTION_MOVE:
           break;
       case MotionEvent.ACTION_UP:
           break;
       }       
       return false;
    }
  
对整个view的滑动和若干子view的click处理都分别完成了,最后发现二者是互斥的,滑动的处理是在viewgroup级别,子view的处理被拦截;不可兼得;
   比如列表等会同时支持滑动和单击;它是怎么实现的

解决方案 »

  1.   

    在onInterceptTouchEvent ACTION_DOWN返回false时,viewGroup的onTouchEvent并不会收到事件,而是最终传递给了子View。先父View捕捉到Touch, 通过onInterceptTouchEvent(),决定是否传递给子Touch, 不下传,就处理掉。
      

  2.   

    我的问题归结为一句话:如何点击时viewGroup把事件下传到子View
                           滑动时viewGroup把事件自己处理??