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

public class ZdyViewPage extends ViewPager {public ZdyViewPage(Context context) {super(context);}public ZdyViewPage(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected 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;}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {super.onInterceptTouchEvent(ev);return false;}}


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

更多相关文章

  1. Android(安卓)GridView设置条目的高度与宽度相等、GridView条目
  2. Android之View篇3————View滑动冲突的解决
  3. Android Fragment内嵌Fragment页面不刷新数据问题
  4. Android studio 新建一个空白工程提示:Conflict with dependency
  5. Android标题栏最右边添加按钮的实例
  6. Android中ScrollView中嵌套ViewPager导致ViewPager不显示的问题
  7. Android:禁止滚动的解决方法
  8. android中封装http请求
  9. Android常见错误处理(一)

随机推荐

  1. 如何选好Android开发书籍和教程[总结]
  2. android中控件的大部分属性解释
  3. Android(安卓)的Camera架构介绍
  4. Android(安卓)EditText属性
  5. Android(安卓)OpenGL ES 开发教程小结
  6. android:inputType标签
  7. 向Android模拟器发短信打电话
  8. 【流媒體】Android(安卓)实时视频采集—M
  9. Android开机Logo制作问题
  10. Android(安卓)自带的一些可用于Activity