SlidingMenu+ViewPage+ListView嵌套(类似网易 ) ListView点击事件失效冲突问题解决

来源:互联网 发布:承德网络超市 编辑:程序博客网 时间:2024/05/19 13:21

SlidingView  方法onInterceptTouchEvent修改

@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {//System.out.println("SlidingView onInterceptTouchEvent");try{final int action = ev.getAction();final float x = ev.getX();final float y = ev.getY();switch (action) {case MotionEvent.ACTION_DOWN:mIsAlreadySetViewState = false;mLastMotionX = x;mLastMotionY = y;mIsBeingDragged = false;break;case MotionEvent.ACTION_MOVE:final float dx = x - mLastMotionX;final float xDiff = Math.abs(dx);final float yDiff = Math.abs(y - mLastMotionY);if(askChild(this,ev,  dx,dx)){      return false;}if (xDiff > mTouchSlop && xDiff > yDiff) {mIsBeingDragged = true;mLastMotionX = x;}break;}return mIsBeingDragged;}catch(IllegalArgumentException ex) {  ex.printStackTrace();return false;}}private boolean askChild(Object v,MotionEvent ev,float dx,float xDiff ){       ViewGroup vg = null;      if(v instanceof ViewGroup){           vg = (ViewGroup)v;       }else{           return false;       }         for(int i=0;i<vg.getChildCount();i++){  if (vg.getChildAt(i) instanceof HorizontalScrollView) {//(这是以HorizontalScrollView为例,其它可以自行加判断)          return ((ViewGroup)vg.getChildAt(i)).onInterceptTouchEvent(ev);      }else if (vg.getChildAt(i) instanceof MyViewPage) {//      System.out.println(" instanceof MyViewPage"+((ViewGroup)vg.getChildAt(i)).onInterceptTouchEvent(ev));      System.out.println(xDiff +"-----------"+scrollX);      MyViewPage mvp=( MyViewPage) vg.getChildAt(i);              if(mvp.getPosition()==0)      if(xDiff>0)//右滑                  return false;//((ViewGroup)vg.getChildAt(i)).onInterceptTouchEvent(ev);      else      if(scrollX<0)//左侧出来      return false;      else      return true;      else      return true;         }           if(askChild(vg.getChildAt(i), ev,dx,xDiff )){                return true;           }     }    return false;}float scrollX =0;
之前ViewPage的onInterceptTouchEvent重写 去掉了,不用重写了

代码

http://download.csdn.net/detail/lj102800/7041393


0 0