我有一個viewpager在左/右滑動時在標籤之間切換。在我的第二個標籤頁中,我有一些自定義視圖,這些視圖具有用於捏和拖動的監聽器,但是當我嘗試捏或拖動時,viewpager開始滑動頁面。如何在觸摸特定視圖時禁用viewpager適配器?
我腦海中想到的一個解決方案是在觸摸這些特定視圖時禁用輕掃,並且只有在觸摸這些視圖之外時才輕掃。這可能嗎?
更新時間: @Asok好心提供的解決方案。但隨後更新的這難道不以我的情況下工作,所以我張貼前面一段代碼,爲我工作的代碼:
public class CustomViewPager extends ViewPager {
private boolean swipeable = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
// Call this method in your motion events when you want to disable or enable
// It should work as desired.
public void setSwipeable(boolean swipeable) {
this.swipeable = swipeable;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
return (this.swipeable) ? super.onInterceptTouchEvent(arg0) : false;
}
讓我們假設我有一個可拖動的觀點,我需要禁用swipping拖動開始時和重新啓用當拖動完成所以的TouchEvent我所謂的觀點:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
//disable swiping when the button is touched
((ActivityOriginal) getActivity()).setSwipeable(false);
//the rest of the code...
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
//re enable swipping when the touch is stopped
//the rest of the code...
((ActivityOriginal) getActivity()).setSwipeable(true);
break;
}
return true;
}
很好的解決方案。你測試過了嗎?它工作? – 2013-05-02 17:33:43
@asok如何從不同的片段訪問customviewpager實例(在活動中創建)? – 2013-05-02 17:59:18
@Asok不幸的是,沒有任何UI元素會對觸摸做出反應,甚至在使用customviewpager而不是viewpager之後的按鈕和列表視圖。 – 2013-05-02 18:12:17