如何禁用前景视图以在背景上执行操作

时间:2012-05-08 18:38:38

标签: java android touch

我有LinearLayout,它有1)视图,2)有一个手势探测器。我的问题是,当我想在线性布局上做一个投掷手势时,如果我的手指遇到任何视图,它将抛出一个MotionEvent.ACTION_CANCEL,这将阻止onFling()回调触发。

我无法真正禁用这些前景视图上的触摸,因为它们是启动Intents的导航的一部分。

THX, -mL

2 个答案:

答案 0 :(得分:0)

听起来好像您的GestureOverlayView可能是布局中的根元素?

简短的例子:

<android.gesture.GestureOverlayView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gestures"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

    android:gestureStrokeType="multiple"
    android:eventsInterceptionEnabled="true"
    android:orientation="vertical">

    <ListView
        android:id="@android:id/list"  
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"  />

</android.gesture.GestureOverlayView>

见这里: http://developer.android.com/resources/articles/gestures.html

答案 1 :(得分:0)

尝试查看ViewPager的内容。 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/support/v4/view/ViewPager.java#ViewPager.onInterceptTouchEvent%28android.view.MotionEvent%29

您需要创建LinearLayout(通过简单地扩展Android的LinearLayout)并覆盖onInterceptTouchEvent。这是在孩子之前调用的,如果它返回真正的父母窃取来自孩子的触摸。 http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent