1. 程式人生 > >Android之禁止ViewPager滑動

Android之禁止ViewPager滑動

當我們想在同一個Activity或者Fragment中展示多個頁面時往往會用到ViewPager,通過滑動,我們可以很方便地在不同的頁面中切換。但是在某些情況下我們可能並不需要通過滑動來切換ViewPager中的頁面(比如為了避免跟頁面內的某些觸控事件衝突),而是希望只點擊下面或者上面的按鈕來切換頁面。像知乎那樣:

這裡寫圖片描述

那麼有什麼方法可以實現不滑動ViewPager呢?其實很簡單,只需要自定義一個不滑動的ViewPager就可以了。ViewPager之所以會隨著手勢滑動,是因為它使用了onTouchEvent監聽事件(檢視原始碼就可以知道)。那我們可以反其道而行之,改動它的onTouchEvent方法就可以了。

使用自定義控制元件的寫法,建立一個MyViewPager類,繼承於ViewPager,由於我們並不需要觸控監聽事件,所以重寫ViewPager中的onTouchEvent方法,返回一個true即可。

public class MyViewPager extends ViewPager {

    public MyViewPager(Context context) {
        super(context);
    }

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

    @Override
public boolean onTouchEvent(MotionEvent ev) { return true; } }

然後,只需要使用我們自定義好的ViewPager即可。