Android之viewPager嵌套viewPager无法滑动子viewPager
现在最头疼的事就是需求不明确,这不,有遇到你个奇葩需求,父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相关推荐
- Android两个tab吸顶,Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每
Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每 Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每个 ...
- 解决ViewPager嵌套WebView时滑动冲突问题
问题描述 当ViewPager里嵌套WebView时,默认WebView是处理不了滑动事件的.这样的话,如果WebView里内容一屏展示不完,就没法查看完整内容了. 解决方案 定制WebView,覆写 ...
- ViewPager相互嵌套,导致子ViewPager无法滑动,且子ViewPager中的view无法被点击
场景:当使用ViewPager进行嵌套的时候,子viewPager是无法进行嵌套的,因此我们要重写ViewPager类,并重写里层viewPager类中的onTouchEvent方法,调用其父 ...
- ViewPager嵌套ViewPager后子ViewPager滑动不正常问题
ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. package com.lwj.app.customview;impo ...
- 解决ViewPager嵌套后子ViewPager不能滑动的方法
2019独角兽企业重金招聘Python工程师标准>>> 重写父ViewPager,并在父ViewPager重载onInterceptTouchEvent方法,并返回false: @O ...
- Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案
为了解决这个问题.可以自定义viewpager,然后在里面监听首饰,自定义点击事件 package com.hpuvoice.view;import android.content.Context; ...
- Android 自定义ViewPager设置屏蔽左右滑动事件
只要有欲望,就应该有奋斗的心.... 屏蔽左右滑动事件的viewPager public class CustomNoScrollViewPager extends ViewPager{private ...
- Android ViewPager嵌套ViewPager+Fragment问题
最近在项目中又遇到了ViewPager互相嵌套的问题,代码实现很简单,主要可能出现的问题是子ViewPager的fragment滑动出现白屏,这个问题的出现是FragmentManager方法调用错误 ...
- android 事件拦截 (Viewpager不可以左右滑动)
以前没有做过真正的需求,所以从来没有觉得事件拦截分发处理有什么好懂的. 现在做需求了,真的是什么需求都有,你作为开发都要去研究实现.比如说,只能点不能滑动的viewpager.其实这都可以不用view ...
最新文章
- win10安装mysql5.6,mysql启动时,闪退
- Libevent:6辅助函数以及类型
- iOS 8 UI布局 AutoLayout及SizeClass(二)
- Linux网络协议指令:ifconfig/netstat(net-tools)工具 .vs. iproute2
- mysql建外键失败
- A2D JS框架 - loadScript实现
- IOS之拨打电话的三种方式
- 跨域 SameSite secure
- python c语言实现_使用C语言为python编写动态模块(3)--在C中实现python中的类
- 安装Office InfoPath 2007
- 计算机上发出打印命令,从计算机上发送打印命令后打印机不打印怎么办
- 网易2017春招笔试——赶去公司
- xtrabackup备份恢复MySQL数据库
- Linux系统默认PATH环境变量的设置
- docker 安装 onlyoffice
- 解决IE浏览器下载文件,文件名乱码问题(浏览器历史介绍)
- send 和recv详解
- 2021年N1叉车司机考试及N1叉车司机报名考试
- 如何选择专业的海关数据公司合作
- PHP爬虫之解析页面的方法
热门文章
- AMR SLAM ROS入门——前言
- 【火车票】心蓝抢票软件
- ORM是什么? ORM框架是什么?
- SQL Server日期时间字符串的处理和转换
- java设计校园网登录界面_java毕业设计_springboot框架的校园网的大学生社交网站...
- PCIe功耗控制--ASPM
- Hibernate中SessionFactory配置
- 【RTSP/RTP流媒体】10、编写简单的RTSP客户端
- Blender:Lowpoly手部建模流程(附blender源文件下载)
- GUID MBR新一代分区表 DiskGenius