Android:onInterceptTouchEvent()永远不会收到ACTION_UP(尽管永远不会返回true !!!)

时间:2014-08-16 23:11:25

标签: android android-listview ontouchevent

我有RelativeLayout,其中包含ListView

当我上下滚动列表视图时,我会在RelativeLayout onInterceptTouchEvent()上体验到这一点:

  • ACTION_DOWN被解雇
  • 只有第一个5-6 ACTION_MOVE被解雇
  • ACTION_UP永远不会被解雇

请注意:

  • 我没有在RelativeLayout上也没有在ListView上实现任何onTouchEvent()
  • 我只是继承RelativeLayout,实现onInterceptTouchEvent(),它总是返回false

有人可以对此作出解释吗?

===

这是我正在使用的简单布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView android:id="@+id/listview"
       android:layout_alignParentTop="true"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望RelativeLayout接收ACTION_UP事件。视图组(RelativeLayout)不会接收未来的触摸事件,除非它通过返回true表示对第一个触摸事件感兴趣 - 所以你应该从onInterceptTouchEvent返回true,而不是false。

Dave Smith在这里解释得很清楚:http://www.doubleencore.com/2014/01/dave-smiths-talk-from-andevcon-2013-android-touch/

摘要:返回true,而不是false。并观看该视频以获得更好的解释:)