2013-05-30 53 views
0

我有ScrollView作为ViewPager的页面。我想完全禁用该ViewPager的触摸事件。当我在我的ViewPager类上重写onTouchEvent时,我只能设法防止水平滚动,而不是滚动儿童ScrollViews。Android中的ViewPager中的ScrollView禁用触摸事件

如何完全禁用ViewPager和其中的所有ScrollViews的触摸事件?

这只是我的概念证明。下一步是防止仅对该ViewPager的某个部分进行滚动。

回答

1

覆盖你的滚动型的onInterceptTouchEvent要么消耗或忽略的事件:

“返回true从孩子偷运动事件,并让他们通过的onTouchEvent()寄发予本ViewGroup中的当前目标将收到ACTION_CANCEL事件,并且此处不会传递更多消息。“

public class InterceptScrollView extends ScrollView { 

public InterceptScrollView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    return false; 
} 

} 
+0

为什么我不能在父类(ViewPager在我的情况下)拦截触摸事件? – mgamer

+2

我可能会误解这一点,但在阅读文档时,首先看到孩子接受手势,然后孩子决定是否要将事件传递给父母。 – ePeace

+0

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