首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ScrolView在滚动时忽略OnTouch?

ScrollView是Android中的一个可滚动视图容器,用于显示超出屏幕范围的内容。当ScrollView滚动时,如果设置了OnTouchListener监听器,会默认忽略OnTouch事件。

ScrollView在滚动时忽略OnTouch事件的原因是为了避免与滚动手势冲突。当用户触摸ScrollView并尝试滚动时,ScrollView会优先处理滚动操作,而不会触发OnTouch事件。这样可以确保滚动的流畅性和用户体验。

然而,如果需要在ScrollView滚动时处理OnTouch事件,可以通过以下方式实现:

  1. 自定义ScrollView:创建一个继承自ScrollView的自定义类,并重写onTouchEvent方法,在方法中处理OnTouch事件。具体实现可以根据需求自定义。
  2. 使用GestureDetector:创建一个GestureDetector对象,并将OnTouchListener监听器设置给ScrollView。在OnTouch事件中,通过GestureDetector来处理滚动和其他手势操作。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 fartscroll.js 让你的网页滚动放屁

放屁绝对不是一个很高雅的行为,但是如果你比较喜欢恶搞,或者愚人节,或者是一些比较特殊的网页设计中,可以通过 fartscroll.js 这个插件让你的网页滚动的过程中 放屁。...直接打开 fatscroll.js 的官方页面(http://theonion.github.io/fartscroll.js/),滚动一下,你就可以听到了放屁声音了,你滚动的距离和速度不同,放屁的声音也不同...使用方法也很简单,先下载插件包,解压出来之后,在网页中引入 fartscroll.min.js 这个文件,然后配置下面的参数等,启用这个插件: // 文档中滚动 400 像素就放屁 $(document...).fartscroll(); // 文档中每滚动 800 像素就放屁 $(document).fartscroll(800); // 网页中没滚动 100 像素就放屁 $("body").fartscroll...(100); // 很多很多的屁 $("body").fartscroll(5); 仅供娱乐和恶搞哈,相信应该没有太多人喜欢访问你网页的时候,听到你网页放屁哈哈。

92920
  • Android开发(14) 可以横向滚动的ListView(固定列头)

    设计图 第一列,是固定的,比如我们第一列一般显示编号序号 其它列,可滚动 在其它列滚动,列头(header)也随之滚动 ? 思路 上下滚动直接使用 listView来实现。...我不想自己计算滚动的距离,因为还要处理越界,坐标等等。于是我使用 OnTouch事件来处理。于是我们必须搞懂OnTouch的运行机制。了解 请google it. 2.3....列头 (显示列名的那一行)是固定的,不会上下滚动 。但可以左右滚动。而且它在左右滚动,所有的 数据行(row) ,都要与其一起左右滚动。...3.1, 捕获 列头(容器控件,包含固定和可滚动控件)的 onTouch事件(拖动事件),不处理。...我写了一个 HorizontalScrollView的子类,重载 onScrollChanged 方法,该方法 滚动之后执行,相当于“滚动后的事件”,我写了一个观察者(设计模式)的类。

    1.9K00

    Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

    也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?...第三个条件就比较关键了,mOnTouchListener.onTouch(this, event),其实也就是去回调控件注册touch事件onTouch方法。...现在我们再来回顾一下开篇提到的那三个问题,相信每个人都会有更深一层的理解。 1. onTouch和onTouchEvent有什么区别,又该如何使用?...如果你onTouch方法里处理完了滑动逻辑后返回true,那么ListView本身的滚动事件就被屏蔽了,自然也就无法滑动(原理同前面例子中按钮不能点击),因此解决办法就是onTouch方法里返回false...第一,ImageView的onTouch方法里返回true,这样可以保证ACTION_DOWN之后的其它action都能得到执行,才能实现图片滚动的效果。

    47710

    Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

    也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?...第三个条件就比较关键了,mOnTouchListener.onTouch(this, event),其实也就是去回调控件注册touch事件onTouch方法。...因为ImageView和按钮不同,它是默认不可点击的,因此onTouchEvent的第14行判断无法进入到if的内部,直接跳到第91行返回了false,也就导致后面其它的action都无法执行了。...现在我们再来回顾一下开篇提到的那三个问题,相信每个人都会有更深一层的理解。 1. onTouch和onTouchEvent有什么区别,又该如何使用?...第一,ImageView的onTouch方法里返回true,这样可以保证ACTION_DOWN之后的其它action都能得到执行,才能实现图片滚动的效果。

    1.2K60

    iOS学习笔记——滚动视图(scrollView)

    大家好,又见面了,我是全栈君 滚动视图:根视图中添加UIScrollViewDelegate协议,声明一些对象属性 @interface BoViewController : UIViewController...动态数组对象,存储图片 @property (retain, nonatomic) NSMutableArray *images; @end /* 何问起 hovertree.com */ 程序中导入图片...,.m文件中的代码实现: - (void)viewDidLoad { [super viewDidLoad]; //初始化scrollView self.scrollView...self.scrollView.scrollEnabled = YES; //设置是否可以进行画面切换 self.scrollView.pagingEnabled = YES; //设置拖拽的时候是否锁定其水平或者垂直的方向...*)scrollView { //获取当前视图的宽度 CGFloat pageWith = scrollView.frame.size.width; //根据scrolView

    1.4K10

    Carson带你学Android:完美解决ScrollView与嵌套EditText的滑动冲突

    原因分析 mScrollView把事件消费掉了,没有传递到EditText,从而导致没法使得 EditText 响应事件 ---- 解决思路 当触摸的是EditText & 当前EditText可滚动...,则将事件交给EditText处理,即进行滚动 否则将事件交由其父类处理,即交给ScrollView进行滚动 具体实现方案 复写EditText的onTouch()并 采用 requestDisallowInterceptTouchEvent...findViewById(R.id.scrollView); mEditText = findViewById(R.id.mEditText); // 复写EditText的onTouch...mEditText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch...(View v, MotionEvent event) { // 当触摸的是EditText & 当前EditText可滚动,则将事件交给EditText处理;

    55920

    Android:完美解决ScrollView与嵌套EditText的滑动冲突

    - 原因分析 mScrollView把事件消费掉了,没有传递到EditText,从而导致没法使得 EditText 响应事件 ---- 解决思路 当触摸的是EditText & 当前EditText可滚动...,则将事件交给EditText处理,即进行滚动 否则将事件交由其父类处理,即交给ScrollView进行滚动 ---- 具体实现方案 复写EditText的onTouch()并 采用 requestDisallowInterceptTouchEvent...findViewById(R.id.scrollView); mEditText = findViewById(R.id.mEditText); // 复写EditText的onTouch...mEditText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch...(View v, MotionEvent event) { // 当触摸的是EditText & 当前EditText可滚动,则将事件交给EditText处理;

    2.5K10

    Android学习第七弹之手势操作

    昨天我们讲了Android的OnTouch触摸事件,有时候触摸和手势是相互联系的,密不可分的关系,所以上节我们讲了触摸事件,今天我们自然而然的就需要讲手势操作了。...参数: el:滚动的起始坐标 e2:滚动的结束坐标 distanceX:滚动的横向巨离 distanceY:滚动的纵向距离 按住 OnGestureListener.onShowPress(MotionEvent...e) 手指按在触摸屏上,它的时间范围在按下起效,长按之前。...SimpleOnGestureListener比OnGestureListener多出来的方法: 双击(onDoubleTap) 双击的第二下Touch down触发 双击事件(onDoubleTapEvent...检测手势的步骤 1、创建手势监听器类继承SimpIeOnGestureListener或实现OnGestureListener 2、创建gestureDetector对象 3、onTouch或onTouchEvent

    90760

    Android系统联系人全特效实现(下),字母表快速滚动

    其实ListView本身是有一个快速滚动属性的,可以通过XML中设置android:fastScrollEnabled="true"来启用。...不过这种快速滚动方式比较丑陋,到后来很多手机厂商定制自己ROM的时候都将默认快速滚动改成了类似iPhone上A-Z字母表快速滚动的方式。这里我们怎么能落后于时代的潮流呢!...另外还需要一个TextView,用于弹出式分组布局上显示当前的分组,默认是gone掉的,只有手指在字母表上滑动才让它显示出来。...事件,然后onTouch方法里做了一些逻辑判断和处理,下面我来一一详细说明。...当你的手指在右侧字母表上滑动,联系人的列表也跟着相应的变动,并在屏幕中央显示一个当前的分组。 现在让我们回数一下,分组导航、挤压动画、字母表快速滚动,Android系统联系人全特效都实现了。

    92880

    Android 酷炫自定义 View:高仿 QQ 窗帘菜单

    再仔细观察菜单的切换你会发现,忽略缩放、透明度等动画,其实菜单切换的过程就是三部分滚动的过程,于是,我们就有了一个大体的思路: 用一个 HorizontalScrollView 包裹三个部分的试图,通过控制...我们滚动,松手后应该能自动根据当前滚动位置关闭或者打开菜单。通常就是以菜单的一半作为分界线。...b、当菜单打开(左右菜单都一样)的时候,点击中间主体区域拦截事件,点击其它地方不拦截事件。也就是说当菜单打开,主体区域的页面元素不可点击,列表也不可滑动,但是菜单区域的元素可以点击。...是否点击中间主体区域稍微复杂一点,我们首先要获取手指点击相对于屏幕的坐标值。...这个值是主体区域动画过程中的缩放比例,乘以这个缩放比例就可以得到缩放后的宽高。

    84910

    Scrollview回弹效果自定义控件

    滚动回弹效果分析: 首先,创建一个类,继承scrollview,重写ontouch事件,实现伸缩回弹效果。 scroollview节点下只能有一个子节点,这个子节点就是我们要移动的view布局。...第一步:获取要操作的子view布局 第二步:重写onTouch事件监听 分析具体事件: 观察分析得出结论: 让布局移动每一次拉动的Y轴一半的距离,然后松手滚动[携带动画]回到原来的位置。...下拉或者上拉的时候,记录按下的Y轴位置 action_down 移动过程中的处理: 计算上一次与本次的Y轴(拉动距离)[而不是按下时候的Y值,和现在移动到的Y值,是每上一次和本次的Y值比较 判断是否需要移动布局的情况...inner.getMeasuredHeight()的值是变化的 //inner.getMeasuredHeight()与getHeight()的区别: 当屏幕可以包裹内容的时候,他们的值相等 当view的高度超出屏幕,...抬起的处理:布局回滚到正常位置 移动动画回滚到正常位置(*:动画执行期间,不允许拖拉操作) 距离:-的滚动距离 public class MyScrollview extends ScrollView

    65710

    Scrollview回弹效果自定义控件

    滚动回弹效果分析: 首先,创建一个类,继承scrollview,重写ontouch事件,实现伸缩回弹效果。 scroollview节点下只能有一个子节点,这个子节点就是我们要移动的view布局。...第一步:获取要操作的子view布局 第二步:重写onTouch事件监听 分析具体事件: 观察分析得出结论: 让布局移动每一次拉动的Y轴一半的距离,然后松手滚动[携带动画]回到原来的位置。...下拉或者上拉的时候,记录按下的Y轴位置 action_down 移动过程中的处理: 计算上一次与本次的Y轴(拉动距离)[而不是按下时候的Y值,和现在移动到的Y值,是每上一次和本次的Y值比较 判断是否需要移动布局的情况...inner.getMeasuredHeight()的值是变化的 //inner.getMeasuredHeight()与getHeight()的区别: 当屏幕可以包裹内容的时候,他们的值相等 当view的高度超出屏幕,...抬起的处理:布局回滚到正常位置 移动动画回滚到正常位置(*:动画执行期间,不允许拖拉操作)    距离:-的滚动距离 public class MyScrollview extends ScrollView

    83250

    关于Android PullTorefreshScrollview回到顶部实例

    当快速滑动手指弹起后,scrollview还在滚动的,什么时候去拿到它的scrollY值呢? ...自定义imageview里面定义线程,扫描当前scrollY和上一次保存的对比,不一样即说明仍在滚动,一样即表明scrollview滚动停止了。  什么时候开启线程呢?...onTouch回调中down、move或者up时调用。  试想下:  如果在down中调用时,用户只scrollview上点击或短距离滑动,imageview里面要不停地开启线程?浪费资源。 ...于是,我选择move中调用imageview地线程。有人会想,这样会不会启动N多个线程呢?move一直移动呢。“iamgeview判断下线程的状态即可,如果已经启动了,就不启动呗”。...scrollView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch

    93790

    Android触摸反馈

    事件分发 当点击事件发生,事件最先传递给Activity,Activity会首先将事件将被所属的Window进行处理,即调用 superDispatchTouchEvent() 方法。...随着手指的滑动Button 的坐标发生了改变,当手指抬起触发 Button#onClick 事件。...自定义 ViewGroup 的触摸反馈 除了重写 onTouchEvent() ,还需要重写 onInterceptTouchEvent() onInterceptTouchEvent() 不用在第一间返回...比如接触到按钮,x,y是相对于该按钮左上点的相对位置。而rawx,rawy始终是相对于屏幕的位置。 move的时候计算偏移量,并用scrollTo()或scrollBy()方法移动view。...注意:滚动的并不是viewgroup内容本身,而是它的矩形边框。 up的时候,判断应显示的页面位置,并计算距离、滑动页面。

    1.5K60

    Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现

    好,今天我们就一起来实现这个效果,总之我第一次看到这个特效是人人客户端看到的,我也就主观性地认为我是模仿人人客户端的特效了。...一个Activity的布局中需要有两部分,一个是菜单(menu)的布局,一个是内容(content)的布局。两个布局横向排列,菜单布局左,内容布局右。...,当滚动到达左边界或右边界,跳出循环。...然后将菜单布局的左偏移量设置为负的菜单布局的宽度,这样菜单布局就会被完全隐藏,只有内容布局会显示界面上。 之后给内容布局注册监听事件,这样当手指在内容布局上滑动的时候就会触发onTouch事件。...onTouch事件里面,根据手指滑动的距离会改变菜单布局的左偏移量,从而控制菜单布局的显示和隐藏。

    2.9K100

    【Android】手把手教你上滑解锁的效果

    流畅滚动 LinearLayout本身是没有smoothScrollTo方法的,仅有的滚动方法只有scrollTo和scrollBy,但是这种滚动方法是突变的,不是线性的,想要实现smoothScrollTo...Scroller类中有computeScroll方法,它能实现流畅滚动的原因是,它将初始位置和目标滑动位置之间的距离分成N份依次调用scrollTo方法,通过postInvalidate每次调用scrollTo...float curY = event.getY(); // 获取移动的y轴距离 float deltaY = curY - mDownY; // 阻止视图原来位置向下滚动...问题与改进 问题出现 基于上述的扩展,RecyclerView的item里的控件添加点击事件后,发现推荐页无法按预期显示隐藏:无论滑动多短的距离甚至是向上滑动,只要是屏幕下方滑动,推荐页总是会自己显示出来...手打不容易,请支持原创,转载请注明链接:http://www.jianshu.com/p/826238318551

    2.7K20
    领券