• 解决ViewPage中嵌套有ListView或者滑动手势等造成滑动的冲突


    public class ViewPagerCompat extends ViewPager {

    //mViewTouchMode表示ViewPager是否全权控制滑动事件,默认为false,即不控制
    private boolean mViewTouchMode = false;

    public ViewPagerCompat(Context context, AttributeSet attrs) {
    super(context, attrs);
    }

    public void setViewTouchMode(boolean b) {
    if (b && !isFakeDragging()) {
    //全权控制滑动事件
    beginFakeDrag();
    } else if (!b && isFakeDragging()) {
    //终止控制滑动事件
    endFakeDrag();
    }
    mViewTouchMode = b;
    }

    /**
    * 在mViewTouchMode为true的时候,ViewPager不拦截点击事件,点击事件将由子View处理
    */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
    if (mViewTouchMode) {
    return false;
    }
    return super.onInterceptTouchEvent(event);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
    try {
    return super.onTouchEvent(ev);
    } catch (Exception e) {
    return false;
    }
    }

    /**
    * 在mViewTouchMode为true或者滑动方向不是左右的时候,ViewPager将放弃控制点击事件,
    * 这样做有利于在ViewPager中加入ListView等可以滑动的控件,否则两者之间的滑动将会有冲突
    */
    @Override
    public boolean arrowScroll(int direction) {
    if (mViewTouchMode) return false;
    if (direction != FOCUS_LEFT && direction != FOCUS_RIGHT) return false;
    return super.arrowScroll(direction);
    }

    }

    杭州ios交流群  372471379      杭州android交流群:369469730

  • 相关阅读:
    团队冲刺八
    第十一周学习进度
    团队冲刺七
    团队冲刺六
    团队冲刺五
    冲刺第五天
    冲刺第四天
    冲刺第三天
    冲刺第二天
    冲刺第一天
  • 原文地址:https://www.cnblogs.com/xishui2011/p/3917068.html
Copyright © 2020-2023  润新知