默認情況下,當您滑過ViewPager時,可以滑過儘可能多的頁面,直至手指觸及屏幕末尾。那麼,是否有可能強制ViewPager只允許一次頁面更改,而不管用戶滑動多少?如何鎖定ViewPager以僅允許一次單擊頁面划動
這就是我說的,直到你的手指到達屏幕的結束刷卡超過尋呼機:
這就是我所說的鎖定ViewPager只允許單頁輕掃在一個時間是指:
謝謝。
默認情況下,當您滑過ViewPager時,可以滑過儘可能多的頁面,直至手指觸及屏幕末尾。那麼,是否有可能強制ViewPager只允許一次頁面更改,而不管用戶滑動多少?如何鎖定ViewPager以僅允許一次單擊頁面划動
這就是我說的,直到你的手指到達屏幕的結束刷卡超過尋呼機:
這就是我所說的鎖定ViewPager只允許單頁輕掃在一個時間是指:
謝謝。
最後,我最終在適配器中完成了它。我所做的是在getCount
方法中返回2
,在選擇之後重新排列項目,並特別處理使用當前位置(0或1)訪問數據集中的項目時的情況。
好的,我想答案是:擴展ViewPager
並覆蓋onTouchEvent(MotionEvent ev)
。
private Rect viewRect = new Rect();
@Override
public boolean onTouchEvent(MotionEvent event) {
getHitRect(viewRect);
if (viewRect.contains(
Math.round(view.getX() + event.getX()),
Math.round(view.getY() + event.getY()))) {
// touch is inside, do normal behavior
return super.onTouchEvent(event);
} else {
// touch is outside, consume the event & do nothing
return true;
}
}
不幸的是,現在沒有時間真正地測試它,我稍後會進行更新。
我想我沒有正確理解你的問題,因爲一個滑動手勢只能移動到下一個或前一個'fragment'(或頁面,如果你想要的話)。你能重新表達嗎? – moictab 2015-04-01 10:25:05
您可能需要編寫大量代碼才能做到這一點,但我會更關心用戶體驗。如果用戶滑動並且有時頁面滾動,有時候不會。你可能會考慮一個不同的視圖,在這個視圖中你有一個左鍵和右鍵,用戶使用按鈕移動頁面,而不是滾動。 – 2015-04-01 10:45:54
但是,如果您絕對需要這樣做,最簡單的方法可能是修改ViewPager的適配器,以便它只顯示三個頁面:顯示的頁面,左側的頁面和右側的頁面。然後,當用戶選擇下一頁時,通過將下一頁作爲當前頁來更新適配器,並且再次返回三頁集,僅移動到一頁上。 – 2015-04-01 10:48:41