zoukankan      html  css  js  c++  java
  • android中控件公用产生的冲突的解决办法

    1.ViewPager嵌套HorizontalScrollView滑动冲突的解决办法,重写ViewPager

    public class ZdyViewPage extends ViewPager {
    
    	public ZdyViewPage(Context context) {
    		super(context);
    	}
    
    	public ZdyViewPage(Context context, AttributeSet attrs) {
    		super(context, attrs);
    	}
    
    	@Override
    	protected boolean canScroll(View v, boolean arg1, int arg2, int arg3,
    			int arg4) {
    		if (v instanceof HorizontalScrollView) {
    			return true;
    		}
    		return super.canScroll(v, arg1, arg2, arg3, arg4);
    	}
    
    }


    2.ScrollView嵌套ViewPager滑动冲突的解决办法,重写ScrollView

    public class NotifyingScrollView extends ScrollView {
        private Context mContext;
        
        /*避免Scroview和ViewPager控件冲突的解决办法*/
        private boolean canScroll;
        private GestureDetector mGestureDetector;
        View.OnTouchListener mGestureListener;
    
        public NotifyingScrollView(Context context) {
            super(context);
            mContext = context;
        }
    
        public NotifyingScrollView(Context context, AttributeSet attrs) {
            super(context, attrs);
            mContext = context;
            mGestureDetector = new GestureDetector(new YScrollDetector());
            canScroll = true;
        }
    
        public NotifyingScrollView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            mContext = context;
        }
        
        /*避免Scroview和ViewPager控件冲突的解决办法*/
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            if(ev.getAction() == MotionEvent.ACTION_UP)
                canScroll = true;
            return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
        }
     
        class YScrollDetector extends SimpleOnGestureListener {
            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                if(canScroll)
                    if (Math.abs(distanceY) >= Math.abs(distanceX))
                        canScroll = true;
                    else
                        canScroll = false;
                return canScroll;
            }
        }
    }


    3.ListView嵌套ViewPager滑动冲突的解决办法,重写ListView

    public class MyListview extends ListView {
    
    	private Context mContext;
    
    	public MyListview(Context context) {
    		super(context);
    		mContext = context;
    	}
    
    	public MyListview(Context context, AttributeSet attrs, Context mContext) {
    		super(context, attrs);
    		this.mContext = mContext;
    	}
    
    	public MyListview(Context context, AttributeSet attrs, int defStyle,
    			Context mContext) {
    		super(context, attrs, defStyle);
    		this.mContext = mContext;
    	}
    
    	@Override
    	public boolean onInterceptTouchEvent(MotionEvent ev) {
    		super.onInterceptTouchEvent(ev);
    		return false;
    	}
    
    }


    在开发中还会遇到很多的控件组合,大家有遇到过的希望都能把代码贴上来,大家共同学习!!!

  • 相关阅读:
    h5 拍照上传 代码
    java jdbc 链接本地mysql数据库 报错 Access denied for user 'root'@'localhost' (using password: YES)
    react.js 中对props 的理解
    react.js 如何 设置页面div 背景图片
    关于Vue.js 和 react.js 的异同
    如何用 npm ,搭建react 项目
    如何进行vue vux版本更新
    js 继承 函数
    absolute 和 z-index妙用
    关于 white-space: pre-wrap;的灵异现象
  • 原文地址:https://www.cnblogs.com/riskyer/p/3333777.html
Copyright © 2011-2022 走看看