Android 如何允许点击在onTouchEvent中冒泡

Android 如何允许点击在onTouchEvent中冒泡,android,touch-event,Android,Touch Event,我有一个ViewPager,它可以包含两种类型的视图。其中一种视图类型具有按钮,而另一种视图类型不具有按钮。无按钮视图类型必须在onTouchEvent中捕捉触摸才能平移和缩放图像。但是我想让点击冒泡到ViewPager(有一个clickListener连接到它) 我必须在视图的onTouchEvent ACTION\u DOWN中返回true,否则它将看不到未来的事件 我无法在ViewPager中使用onInterceptTouchEvent()捕获单击,因为其中一个视图确实有按钮,而这些按钮

我有一个ViewPager,它可以包含两种类型的视图。其中一种视图类型具有按钮,而另一种视图类型不具有按钮。无按钮视图类型必须在onTouchEvent中捕捉触摸才能平移和缩放图像。但是我想让点击冒泡到ViewPager(有一个clickListener连接到它)

我必须在视图的onTouchEvent ACTION\u DOWN中返回true,否则它将看不到未来的事件

我无法在ViewPager中使用onInterceptTouchEvent()捕获单击,因为其中一个视图确实有按钮,而这些按钮需要单击


那么,我的视图如何才能捕捉滑动,让点击冒出气泡呢?

尝试使用这个
视图组。onInterceptTouchEvent(MotionEvent)
。这允许视图组在事件被分派到子视图时观察事件。

正确的方法可能是只截取您想要截取的事件,仅在需要时在onInterceptTouchEvent中返回true

但是如果你想去黑暗面,有一个肮脏的选择,可能会吸引你,你可能会后悔:拦截所有的事件,然后如果需要的话,把它们传下去

e、 在你的观点里有类似的东西

     public boolean canInterceptTouch(MotionEvent ev) {
       // return true if you are interested in this touch event, e.g. it falls into
       // a clickable area
}
还有一些处理触摸事件的东西,比如

    public void interceptTouch(MotionEvent ev) {
       // here you react to the event
}
在您的viewpager中,您有

 @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {

        return true;
    }
thien视图寻呼机将以如下脏方式处理事件:

@Override
    public boolean onTouchEvent(MotionEvent ev) {

    if (yourView.canInterceptTouch(ev))) {
            yourView.interceptTouch(ev);
            return true;
    } else {
         return doSomethingElse();
    }
}
注意:虽然我做了一些类似的事情,但效果不错,除非你在处理运动事件时有非常简单的逻辑,否则我不会把它作为解决方案,否则它会变得一团糟。如果你现在花点时间好好做,你未来的自己会更快乐


编辑:代码还没有经过测试,只是为了让您了解您需要什么。抱歉,有任何输入错误。

如问题所述,我不能这样做。但是谢谢你花时间:)试着使用一个接口并实现它们。我爱未来的我,决不会故意做一些事情来惹恼他。但我想你给了我一个暗示。。。我是倒着做的。我应该截取我想要的一切,让点击通过。不,该死,只有视图组有一个onIntercept。不好,我们这样说吧。ONERCEPTTOUCH在此接收事件。如果返回false,它们将继续传递到这里,但会被分派到子视图。如果返回true,事件将转到viewpager ontouchevent。我不得不读了几遍医生的书才能明白这是怎么回事,同时我已经处于黑暗的一面了…好吧,现在我坐在办公桌旁,可以更好地看到这一点了。。。它实际上就是我要取出的:)我希望容器不需要知道细节,这样我就可以在其他地方重用视图。