2013-05-30 54 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