標籤:
ViewPager來實現左右滑動切換tab。假設tab的某一項中嵌入了水平可滑動的View就會讓你有些不爽,比方想滑動tab項中的可水平滑動的控制項,卻導致tab切換。
由於Android事件機制是從父View傳向子View的,能夠去檢測你當前子View是不是在有可滑動控制項等,決定事件是否攔截。可是這個麻煩,並且並不能解決全部的問題(必須檢測觸摸點是否在這個控制項上面),事實上有比較簡單的方法,在你嵌套的控制項中注入ViewPager執行個體(調用控制項的getParent()方法),然後在onTouchEvent。onInterceptTouchEvent。dispatchTouchEvent裡面告訴父View。也就是ViewPager不要攔截該控制項上的觸摸事件。
1 requestDisallowInterceptTouchEvent(true)
代碼一般例如以下:
1 public boolean onTouch(View v, MotionEvent event) { 2 switch (event.getAction()) { 3 case MotionEvent.ACTION_MOVE: 4 pager.requestDisallowInterceptTouchEvent(true); 5 break; 6 case MotionEvent.ACTION_UP: 7 case MotionEvent.ACTION_CANCEL: 8 pager.requestDisallowInterceptTouchEvent(false); 9 break;10 }11 }
當使用者按下的時候,我們告訴父組件。不要攔截我的事件(這當子組件能夠正常響應的一個事件一時間),拿起會告訴家長成分可以預防。
著作權聲明:本文博主原創文章,部落格,未經同意不得轉載。
android requestDisallowInterceptTouchEvent用途