日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android viewpager 滑动方法,Android中Viewpager禁止滑动的实现

發(fā)布時(shí)間:2023/12/19 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android viewpager 滑动方法,Android中Viewpager禁止滑动的实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

現(xiàn)在很多app,首頁不允許滑動(dòng)切換(因?yàn)轫撁婕虞d吧),但是又用viewpage來管理frgament.因?yàn)榉奖懵?

以前在網(wǎng)上找的例子:

public class NoScrollViewPager extends ViewPager {

public NoScrollViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

}

public NoScrollViewPager(Context context) {

super(context);

}

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

//不攔截,否則子孩子都無法收到事件,一般這個(gè)自定義的時(shí)候都不作處理

return super.dispatchTouchEvent(ev);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

return super.onInterceptTouchEvent(ev);

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

return true;

}

這個(gè)自定義如果繼承的Viewpager是低版本的,那么是沒問題的.

但是如果你編譯時(shí)用是高版本的api,5.0以后吧.上面這個(gè)自定義就會(huì)失效,

你會(huì)發(fā)現(xiàn),會(huì)有細(xì)微的滑動(dòng).還是能滑動(dòng)的

判斷老的還是新的,看setOnPageChangeListener就知道了

最新的Viewpager里面這個(gè)方法已經(jīng)廢棄了,改成addOnPageChangeListener()了.

由于之前改viewpager做懶加載.一直保留了一個(gè)老版本的Viewpager使用.直到最近才發(fā)現(xiàn).

改進(jìn)后

public class NoScrollViewPager extends ViewPager {

private boolean isScroll;

public NoScrollViewPager(Context context,AttributeSetattrs{

super(context, attrs);

}

public NoScrollViewPager(Context context) {

super(context);

}

/**

* 1.dispatchTouchEvent一般情況不做處理

*,如果修改了默認(rèn)的返回值,子孩子都無法收到事件

*/

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

return super.dispatchTouchEvent(ev); // return true;不行

}

/**

* 是否攔截

* 攔截:會(huì)走到自己的onTouchEvent方法里面來

* 不攔截:事件傳遞給子孩子

*/

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

// return false;//可行,不攔截事件,

// return true;//不行,孩子無法處理事件

//return super.onInterceptTouchEvent(ev);//不行,會(huì)有細(xì)微移動(dòng)

if (isScroll){

return super.onInterceptTouchEvent(ev);

}else{

return false;

}

}

/**

* 是否消費(fèi)事件

* 消費(fèi):事件就結(jié)束

* 不消費(fèi):往父控件傳

*/

@Override

public boolean onTouchEvent(MotionEvent ev) {

//return false;// 可行,不消費(fèi),傳給父控件

//return true;// 可行,消費(fèi),攔截事件

//super.onTouchEvent(ev); //不行,

//雖然onInterceptTouchEvent中攔截了,

//但是如果viewpage里面子控件不是viewgroup,還是會(huì)調(diào)用這個(gè)方法.

if (isScroll){

return super.onTouchEvent(ev);

}else {

return true;// 可行,消費(fèi),攔截事件

}

}

public void setScroll(boolean scroll) {

isScroll = scroll;

}

}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

總結(jié)

以上是生活随笔為你收集整理的android viewpager 滑动方法,Android中Viewpager禁止滑动的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。