本文主要介绍如何解决ViewPager在ScrollView中滑动经常失效、无法正常滑动问题

解决方法只需要在接近水平滚动时ScrollView不处理事件而交由其子View(即这里的ViewPager)处理即可,重写ScrollView的onInterceptTouchEvent函数,如下:

  1. package cc.newnews.view;
  2. import android.content.Context;
  3. import android.util.AttributeSet;
  4. import android.view.GestureDetector;
  5. import android.view.GestureDetector.SimpleOnGestureListener;
  6. import android.view.MotionEvent;
  7. import android.widget.ScrollView;
  8. public class VerticalScrollView extends ScrollView {
  9. private GestureDetector mGestureDetector;
  10. public VerticalScrollView(Context context, AttributeSet attrs) {
  11. super(context, attrs);
  12. mGestureDetector = new GestureDetector(context, new YScrollDetector());
  13. }
  14. @Override
  15. public boolean onInterceptTouchEvent(MotionEvent ev) {
  16. return super.onInterceptTouchEvent(ev)
  17. && mGestureDetector.onTouchEvent(ev);
  18. }
  19. class YScrollDetector extends SimpleOnGestureListener {
  20. @Override
  21. public boolean onScroll(MotionEvent e1, MotionEvent e2,
  22. float distanceX, float distanceY) {
  23. /**
  24. * 如果我们滚动更接近水平方向,返回false,让子视图来处理它
  25. */
  26. return (Math.abs(distanceY) > Math.abs(distanceX));
  27. }
  28. }
  29. }

再将xml中的ScrollView改为<xxx.xxx.xxx.VerticalScrollView>即包名.重写的ScrollView的类名)即可。

本方法同样适用于ScrollView中ListView等其他View无法滚动。

ScrollView中ViewPager无法正常滑动问题的更多相关文章

  1. 解决ScrollView嵌套ViewPager出现的滑动冲突问题

    /**       *         解决ScrollView嵌套ViewPager出现的滑动冲突问题       */       public class ScrollView1 extends ...

  2. 关于ScrollView中嵌套listview焦点滑动问题 解决

    (第三种,第四种简单推荐使用) 在这里我要提出的是,listview能滚动的前提是:当listview本身的高度小于listview里的子view. 第一种方法 只需在MainActivity中 找到 ...

  3. (转)ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 本篇主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌 ...

  4. 关于ViewPager被嵌套在ScrollView中不显示的问题

    关于ViewPager被嵌套在ScrollView中不显示的问题 进入全屏 ScrollView 嵌套ViewPager,要不是业务需求这样,估计没人愿意这么干!因为这种方式,会问题多多,简单百度一下 ...

  5. 改动ScrollView的滑动速度和解决ScrollView与ViewPager的冲突

    话不多说,非常easy,能够从凝视中知道做法,直接上代码: 1.改动ScrollView的滑动速度: public class MyHorizontalScrollView extends Horiz ...

  6. Android实践之ScrollView中滑动冲突处理

    转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52130923 1. 前言 在Android开发中,假设是一些简单的布局.都非常easy ...

  7. Android ScrollView与ViewPager滑动冲突

    前段时间做项目碰到在ScrollView里添加ViewPager,但是发现ViewPager的左右滑动和ScrollView的滑动冲突了,解决这个问题的方法是重写ScrollView. 代码: pub ...

  8. 修复在“Android 在ScrollView中嵌入ViewPage后ViewPage不能很好的工作的问题解决”这篇博客中MyScrollView出现滑动一会就不会上下滑动的问题

    在“Android 在ScrollView中嵌入ViewPage后ViewPage不能很好的工作的问题解决”,这篇博客中的大部分问题已经解决了. 唯一遗憾的是,ViewPage随人能够工作了,但是My ...

  9. Android中ViewPager实现滑动条及与Fragment结合的实例教程

    ViewPager类主要被用来实现可滑动的视图功能,这里我们就来共同学习Android中ViewPager实现滑动条及与Fragment结合的实例教程,需要的朋友可以参考下 自主实现滑动指示条先上一个 ...

随机推荐

  1. vos2009如何设置客户自助密码

    1.  VOS2009 账户管理——>网关管理——>密码:就是客户的自助登陆密码 2.  VOS3000 Vos3000里配置密码和自助密码分开 3.  登陆测试 浏览器输入http:// ...

  2. Docker和宿主机操作系统文件目录互相隔离的实现原理

    我们知道在Docker容器里是无法访问到宿主操作系统的文件目录的,但这种隔离是怎么实现的呢? 其实一点也不神奇--利用了Linux系统的内部命令chroot. chroot能将进程的根目录设置成任意指 ...

  3. CRUD全栈式编程架构之更精简的设计

    精简的程度 ViewModel精简 服务精简 控制器精简 Index.cshmtl精简 AddOrEdit.cshtml精简 效果:最精简的情况下,只需要写Entity这一个数据库实体然后加上一些简单 ...

  4. 找子串替换(kmp)poj1572

    题目链接:http://poj.org/problem?id=1572 输入数据时要注意,这里是string型 用getline(cin,origin[i]); #include <string ...

  5. chapter1-printf.py

    #!/usr/bin/env python # _*_ coding:utf-8 _*_ from ctypes import * libc = CDLL("libc.so.6") ...

  6. django2.2连接mysql遇到的坑

    1.mysql数据库配置 2.首先需要建一个myweb数据库 3.执行数据库迁移命令makemigrations python manage.py makemigrations MySite 报错: ...

  7. 线程池,多线程,线程异步,同步和死锁,Lock接口

    线程池 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源.线程 ...

  8. 设置禁止网络连接后,jdbc如何连接到数据库

    设置禁止网络连接,可在my.ini文件中添加如下两行 skip-networking enable-named-pipe 可以通过 SHOW VARIABLES LIKE '%skip_ne%' 来查 ...

  9. EL 和 JSTL 的使用

    EL Express Language 表达式语言 就是把<% 这里可以写java语言 %> 这种jsp的写法简化变为${ }的方式 例如 action="${pageConte ...

  10. BZOJ3669: [Noi2014]魔法森林(瓶颈生成树 LCT)

    Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 3558  Solved: 2283[Submit][Status][Discuss] Descript ...