ScrollView嵌套Scrollview滑动冲突

来源:互联网 发布:淘宝哪家手办店好 编辑:程序博客网 时间:2024/05/03 22:21
主要解决的问题:实现父控件和子控件都可以滑动,并且当子控件滑动到最低端,继续滑动的时候,获得父控件焦点,同理,向上滑动
步骤:
 第一步:继承OnTouchListener,第二步:帖代码
/**
  * ScrollView中嵌套SrcollView 滑动冲突
  */
float start=0;
    float start1=0;
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
  switch (arg0.getId()) {
  case R.id.scrParent://父控件布局
   scrChild.getParent().requestDisallowInterceptTouchEvent(false);
   scrChildren.getParent().requestDisallowInterceptTouchEvent(false);
   break;
  case R.id.scrChild://子控件布局
   if ((arg1.getY() - start) > 0) {
    if (arg0.getScrollY() == 0) {
     arg0.getParent().requestDisallowInterceptTouchEvent(false);
    } else {
     arg0.getParent().requestDisallowInterceptTouchEvent(true);
    }
   } else {
    if (arg0.getHeight() + arg0.getScrollY() >= scrChild
      .getChildAt(0).getMeasuredHeight()) {
     arg0.getParent().requestDisallowInterceptTouchEvent(false);
    } else {
     arg0.getParent().requestDisallowInterceptTouchEvent(true);
    }
   }
   start = arg1.getY();
   break;
  case R.id.scrChildren:
   if ((arg1.getY() - start1) > 0) {
    if (arg0.getScrollY() == 0) {
     arg0.getParent().requestDisallowInterceptTouchEvent(false);
    } else {
     arg0.getParent().requestDisallowInterceptTouchEvent(true);
    }
   } else {
    if (arg0.getHeight() + arg0.getScrollY() >= scrChild
      .getChildAt(0).getMeasuredHeight()) {
     arg0.getParent().requestDisallowInterceptTouchEvent(false);
    } else {
     arg0.getParent().requestDisallowInterceptTouchEvent(true);
    }
   }
   start1 = arg1.getY();
   break;
  }
  return false;
}
0 0
原创粉丝点击