解决ScrollView嵌套viewpager滑动事件冲突问题
2024-09-28 13:45:04
重写ScrollView
第一种方案能解决viewpager的滑动问题,但是scrollView有时会滑不动
public class VerticalScrollView extends ScrollView { private GestureDetector mGestureDetector; public VerticalScrollView(Context context, AttributeSet attrs){
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
} @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
} class YScrollDetector extends SimpleOnGestureListener { @Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
/**
* if we're scrolling more closer to x direction, return false, let subview to process it
*/
HBLog.i("VerticalScrollView", distanceY+"----"+distanceX);
return (Math.abs(distanceY) > Math.abs(distanceX));
}
} }
第二种方案能够解决上面的问题
public class VerticalScrollView extends ScrollView { private float xDistance, yDistance, xLast, yLast; public VerticalScrollView(Context context) {
super(context);
} public VerticalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
} public VerticalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
} @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY(); xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY; if (xDistance > yDistance) {
return false;
}
}
return super.onInterceptTouchEvent(ev);
} }
最新文章
- CSS中使用text-transform实现首字母大写
- Testlink安装问题收录
- git之https或http方式设置记住用户名和密码的方法
- linux日常小坑
- Blackfin DSP(二):寄存器操作与GPIO
- EDM博主笔记:EDM邮件营销的几个细节问题
- Altium Designer PCB制作入门实例
- LightOj1028 - Trailing Zeroes (I)---求因子个数
- html网页编码问题
- [google面试CTCI] 2-0.链表的创建
- PAT1078 Hashing 坑爹
- Spark在Windows下的环境搭建(转)
- sqlcipher 数据库解密
- 虚拟机安装的ubutun全屏
- 浅谈CSRF攻击方式(转)
- MVC4升级到MVC5未能加载文件或程序集System.Web.WebPages.Razor, Version=3.0.0.0
- python线程详解
- Android开发之经常使用的时间格式
- linux下mysql的安装配置
- 英语每日阅读---5、VOA慢速英语(翻译+字幕+讲解):美国人口普查局表示美国人受教育程度提升