方法原理
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...