scrollview 的滑动与子view的点击冲突

scrollview的子view,当滑动scrollview时,经常回误入子view的点击事件,因此需要重写scrollview,当滑动一定距离,拦截事件

主要是重写onInterceptTouchEvent

public ClickScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    ViewConfiguration vc = ViewConfiguration.get(context);
    mSlop = vc.getScaledTouchSlop();
}
private float mDownX;  //按下的x坐标
private float mDownY;  //按下的y坐标
private int mSlop;
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
        //Down事件,初始化变量
        case MotionEvent.ACTION_DOWN:
            mDownX = ev.getX();
            mDownY = ev.getY();
            break;
        case MotionEvent.ACTION_MOVE:
 // X方向和Y方向滑动的距离大于mSlopY。拦截点击事件
         if (Math.abs(Math.abs(ev.getX() - mDownX);) > mSlop || Math.abs( Math.abs(ev.getY() - mDownY))> mSlop) {
             return true;
            } 
    }
    return super.onInterceptTouchEvent(ev);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容