Viewpager禁止滑動的方法

2021-10-22 14:22:57 字數 960 閱讀 7390

方法原理

viewpager是通過重寫viewgroup實現的,它在onintercepttouchevent(motionevent ev)方法中處理了判斷了觸控事件是否要攔截,然後交給ontouchevent(motionevent ev)處理觸控事件。那麼我們可以得到兩種禁止滑動的方法:

方法1因為dispatchtouchevent(motionevent event)先執行新增的view.ontouchlistener的ontouch(view v, motionevent event), 並且如果ontouch返回true則不會執行ontouchevent(),所以可以這樣,

mviewpager.

setontouchlistener

(new

view.ontouchlistener()

});

但是這種方案還是可以滑動一點點,未找到原因。這個方案實踐是不行的。

方法2重寫viewpager的onintercepttouchevent(motionevent ev)方法,選擇性返回false表示不攔截。很多帖子直接新建乙個繼承於viewpager的子類,這個子類重寫了onintercepttouchevent(motionevent ev),如下

public

noscrollviewpager

(context context, attributeset attrs)..

.}

其實也可以通過重寫activity的oncreateview(…)方法,如下

public

class

demoactivity

extends

baseactivity

else}}

;}else}.

...}

總結

方法2能解決問題,方法1不能解決問題。

禁止滑動的ViewPager

viewpager非常好用,但有時候需要在viewpager的裡面再嵌入viewpager,那麼就有衝突了,簡單粗暴的方法就是直接把乙個viewpager禁止滑動。注意 禁止滑動的同時不能禁止 setcurrentitem 方法。實現思路 重寫viewpager,覆蓋 ontouchevent 和 ...

禁止滑動的ViewPager

viewpager非常好用,但有時候需要在viewpager的裡面再嵌入viewpager,那麼就有衝突了,簡單粗暴的方法就是直接把乙個viewpager禁止滑動。注意 禁止滑動的同時不能禁止 setcurrentitem 方法。實現思路 重寫viewpager,覆蓋 ontouchevent 和 ...

禁止ViewPager左右滑動

有時候我們需要禁止掉viewpager的左右滑動,怎麼做呢,一般是自定viewpager。然後覆蓋viewpager的onintercepttouchevent motionevent arg0 方法和ontouchevent motionevent arg0 方法,這兩個方法的返回值都是boole...