当前位置: 首页 > 知识库问答 >
问题:

ListView父视图无法拦截触摸事件

葛越泽
2023-03-14

我有一个简单的布局:

<CustomFrameLayout>
    <ListView />
</CustomFrameLayout>

在我的定义框架布局中,我正在重写:

onInterceptTouchEvent(MotionEvent event);

并且返回false。滚动列表视图时,onInterceptTouchEvent接收ACTION_ DOWN和第一个ACTION_。然后,ListView似乎会接管,onInterceptTouchEvent无法接收以下ACTION_MOVE事件。

这与文档所述的内容相悖:

因为只要从这个函数返回false,每个后续事件(直到并包括最终的up)将首先在这里传递,然后传递到目标的onTouchEvent()。

http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)

我已经研究了请求触摸事件不要在ListView级别被拦截。

requestDisallowInterceptTouchEvent(boolean disallowIntercept)

这似乎没有任何效果。我也应该在ListView单元格视图上调用它吗?我还遗漏了什么吗?我正在Android4.4上测试

谢谢。

共有2个答案

屠瑞
2023-03-14

我已决定替代此方法。在这里,我可以保证在将所有触摸事件发送到子视图并可能被子视图使用之前,我可以拦截这些事件。

dispatchTouchEvents(MotionEvent event);
柏阳炎
2023-03-14

您应该在onInterceptTouchEvent(MotionEvent事件)中返回true

true表示您愿意接收进一步的触摸动作,而asfalse,表示您对进一步的动作不感兴趣。。。

 类似资料:
  • 触摸操作概述 浏览器的触摸 API 由三个部分组成。 Touch:一个触摸点 TouchList:多个触摸点的集合 TouchEvent:触摸引发的事件实例 Touch接口的实例对象用来表示触摸点(一根手指或者一根触摸笔),包括位置、大小、形状、压力、目标元素等属性。有时,触摸动作由多个触摸点(多根手指)组成,多个触摸点的集合由TouchList接口的实例对象表示。TouchEvent接口的实例对

  • 触摸事件是手机游戏中最重要的事件,它易于创建,还能提供多种多样的功能。 让我们先了解一下什么是触摸事件,当你触摸移动设备的屏幕时,设备感受到被触摸,了解到被触摸的位置,同时取得触摸到的内容,然后你的触摸被回答。 这就是触摸事件。 如果你希望通过触摸控制屏幕下层的对象,那可以通过 优先级,达成这种需求,优先级高的对象能先处理事件。 创建触摸事件监听器: // Create a "one by on

  • 我正在写一个基于Object的小2D机器人游戏,所以我把整个游戏绘制在 注册一个< code>OnTouchListener,但是我如何检测球的接触呢? 另一个问题是球是一个简单的物体。如果我有一些不规则的物体,不能用半径或其他东西来描述呢?我是否使用了png的正确“技术”来构建画布控件,或者有没有更好/更简单的方法? 这是我在所有平台(JS,Android,iOS)上遇到的典型问题,我不知道解决

  • 主要内容:jQuery Mobile 点击,实例,jQuery Mobile 点击不放(长按),实例,jQuery Mobile 滑动,实例,jQuery Mobile 向左滑动,实例,jQuery Mobile 向右滑动,实例触摸事件在用户触摸屏幕(页面)时触发。 触摸事件同样可应用与桌面电脑上:点击或者滑动鼠标! jQuery Mobile 点击 点击事件在用户点击元素时触发。 如下实例:当点击 <p> 元素时,隐藏当前的 <p> 元素: 实例 $("p").on("tap",functio

  • 我想知道是否有可能在GLSurfaceView上进行ImageView并获得两者各自的触摸事件。我的问题是,我想知道ImageView何时被按下(因此我将使用OnTouchListener)。但是,我仍然希望能够获得我的glsurfaceview的触碰事件。 提前感谢, 编辑:这是我的activity_main.xml

  • 触摸事件在用户触摸屏幕(页面)时触发。 触摸事件同样可应用与桌面电脑上:点击或者滑动鼠标! jQuery Mobile 点击 点击事件在用户点击元素时触发。 如下实例:当点击 <p> 元素时,隐藏当前的 <p> 元素: $("p").on("tap",function(){   $(this).hide(); }); jQuery Mobile 点击不放(长按) 点击不放(长按) 事件在点击并