现在最头疼的事就是需求不明确,这不,有遇到你个奇葩需求,父viewPager总共有三个选项卡,第一个选项卡里嵌入一个子viewPager,这时候问题就来了,子viewPager无法滑动,我猜的事父viewPager把子viewPager拦截了,于是尝试了下面的第一种方法

1.重写父viewPager的onInterceptTouchEvent方法

/*** @author 子墨** 2015-2-26上午8:59:50*/
public class MyViewPager extends ViewPager {public MyViewPager(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onInterceptTouchEvent(MotionEvent arg0) {return false;}}

当然方法很多,也可以尝试重写子viewPager

2.重写子viewPager,通过getParent().requestDisallowInterceptTouchEvent(true)方法 通知父控件不拦截

public class MyViewPager extends ViewPager {  public MyViewPager(Context context) {  super(context);  }  public MyViewPager(Context context, AttributeSet attrs) {  super(context, attrs);  }  PointF downPoint = new PointF();  OnSingleTouchListener onSingleTouchListener;  @Override  public boolean onTouchEvent(MotionEvent evt) {  switch (evt.getAction()) {  case MotionEvent.ACTION_DOWN:  // 记录按下时候的坐标  downPoint.x = evt.getX();  downPoint.y = evt.getY();  if (this.getChildCount() > 1) { //有内容,多于1个时  // 通知其父控件,现在进行的是本控件的操作,不允许拦截  getParent().requestDisallowInterceptTouchEvent(true);  }  break;  case MotionEvent.ACTION_MOVE:  if (this.getChildCount() > 1) { //有内容,多于1个时  // 通知其父控件,现在进行的是本控件的操作,不允许拦截  getParent().requestDisallowInterceptTouchEvent(true);  }  break;  case MotionEvent.ACTION_UP:  // 在up时判断是否按下和松手的坐标为一个点  if (PointF.length(evt.getX() - downPoint.x, evt.getY()  - downPoint.y) < (float) 5.0) {  onSingleTouch(this);  return true;  }  break;  }  return super.onTouchEvent(evt);  }  public void onSingleTouch(View v) {  if (onSingleTouchListener != null) {  onSingleTouchListener.onSingleTouch(v);  }  }  public interface OnSingleTouchListener {  public void onSingleTouch(View v);  }  public void setOnSingleTouchListener(  OnSingleTouchListener onSingleTouchListener) {  this.onSingleTouchListener = onSingleTouchListener;  }
}

重写子viewpager代码摘自杭州山不高

其实上面的两种方法更倾向于第一种,当然第二种也能解决问题,但是第二种会破坏事件分发的流程,直接告诉父控件不要拦截,我自己的是自己处理,总归有些霸道,哈哈,不符合中庸之道

这样写能解决问题,但是体验不好,最后还是放弃了,我只是分享我遇到的问题和解决方法,如果你有更好的方法,互相交流。

Android之viewPager嵌套viewPager无法滑动子viewPager相关推荐

  1. Android两个tab吸顶,Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每

    Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每 Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每个 ...

  2. 解决ViewPager嵌套WebView时滑动冲突问题

    问题描述 当ViewPager里嵌套WebView时,默认WebView是处理不了滑动事件的.这样的话,如果WebView里内容一屏展示不完,就没法查看完整内容了. 解决方案 定制WebView,覆写 ...

  3. ViewPager相互嵌套,导致子ViewPager无法滑动,且子ViewPager中的view无法被点击

        场景:当使用ViewPager进行嵌套的时候,子viewPager是无法进行嵌套的,因此我们要重写ViewPager类,并重写里层viewPager类中的onTouchEvent方法,调用其父 ...

  4. ViewPager嵌套ViewPager后子ViewPager滑动不正常问题

    ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. package com.lwj.app.customview;impo ...

  5. 解决ViewPager嵌套后子ViewPager不能滑动的方法

    2019独角兽企业重金招聘Python工程师标准>>> 重写父ViewPager,并在父ViewPager重载onInterceptTouchEvent方法,并返回false: @O ...

  6. Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案

    为了解决这个问题.可以自定义viewpager,然后在里面监听首饰,自定义点击事件 package com.hpuvoice.view;import android.content.Context; ...

  7. Android 自定义ViewPager设置屏蔽左右滑动事件

    只要有欲望,就应该有奋斗的心.... 屏蔽左右滑动事件的viewPager public class CustomNoScrollViewPager extends ViewPager{private ...

  8. Android ViewPager嵌套ViewPager+Fragment问题

    最近在项目中又遇到了ViewPager互相嵌套的问题,代码实现很简单,主要可能出现的问题是子ViewPager的fragment滑动出现白屏,这个问题的出现是FragmentManager方法调用错误 ...

  9. android 事件拦截 (Viewpager不可以左右滑动)

    以前没有做过真正的需求,所以从来没有觉得事件拦截分发处理有什么好懂的. 现在做需求了,真的是什么需求都有,你作为开发都要去研究实现.比如说,只能点不能滑动的viewpager.其实这都可以不用view ...

最新文章

  1. win10安装mysql5.6,mysql启动时,闪退
  2. Libevent:6辅助函数以及类型
  3. iOS 8 UI布局 AutoLayout及SizeClass(二)
  4. Linux网络协议指令:ifconfig/netstat(net-tools)工具 .vs. iproute2
  5. mysql建外键失败
  6. A2D JS框架 - loadScript实现
  7. IOS之拨打电话的三种方式
  8. 跨域 SameSite secure
  9. python c语言实现_使用C语言为python编写动态模块(3)--在C中实现python中的类
  10. 安装Office InfoPath 2007
  11. 计算机上发出打印命令,从计算机上发送打印命令后打印机不打印怎么办
  12. 网易2017春招笔试——赶去公司
  13. xtrabackup备份恢复MySQL数据库
  14. Linux系统默认PATH环境变量的设置
  15. docker 安装 onlyoffice
  16. 解决IE浏览器下载文件,文件名乱码问题(浏览器历史介绍)
  17. send 和recv详解
  18. 2021年N1叉车司机考试及N1叉车司机报名考试
  19. 如何选择专业的海关数据公司合作
  20. PHP爬虫之解析页面的方法

热门文章

  1. AMR SLAM ROS入门——前言
  2. 【火车票】心蓝抢票软件
  3. ORM是什么? ORM框架是什么?
  4. SQL Server日期时间字符串的处理和转换
  5. java设计校园网登录界面_java毕业设计_springboot框架的校园网的大学生社交网站...
  6. PCIe功耗控制--ASPM
  7. Hibernate中SessionFactory配置
  8. 【RTSP/RTP流媒体】10、编写简单的RTSP客户端
  9. Blender:Lowpoly手部建模流程(附blender源文件下载)
  10. GUID MBR新一代分区表 DiskGenius