完美解决ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题

来源:互联网 发布:电能质量算法 编辑:程序博客网 时间:2024/04/30 10:42

完美解决ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题

完美解决方案如下,转载请注明出处:蓝冰论坛

解决方案如下:

第一步:建立一个类叫:VerticalScrollView.java,内容如下:
package com.lanbing.shop;

import android.content.Context;  import android.util.AttributeSet;  import android.view.GestureDetector;  import android.view.GestureDetector.SimpleOnGestureListener;  import android.view.MotionEvent;  import android.widget.ScrollView;  public class VerticalScrollView extends ScrollView {      private GestureDetector mGestureDetector;      public VerticalScrollView(Context context, AttributeSet attrs) {          super(context, attrs);          mGestureDetector = new GestureDetector(context, new YScrollDetector());      }      @Override      public boolean onInterceptTouchEvent(MotionEvent ev) {          return super.onInterceptTouchEvent(ev)                  && mGestureDetector.onTouchEvent(ev);      }      class YScrollDetector extends SimpleOnGestureListener {          @Override          public boolean onScroll(MotionEvent e1, MotionEvent e2,                  float distanceX, float distanceY) {               //如果我们滚动更接近水平方向,返回false,让子视图来处理它             return (Math.abs(distanceY) > Math.abs(distanceX));          }      }  }

第二步:添加类之后,记得在权限文件里添加:

<activity android:name="com.lanbing.VerticalScrollView"></activity>

第三步:
在xml文件中替换ScrollView为com.weiyg.cn.shop.VerticalScrollView即可

解释就是:

触控在接近水平滚动时ScrollView不处理事件而交由其子View(即这里的ViewPager)处理即可,重写ScrollView的onInterceptTouchEvent函数

0 0