国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中Viewpager禁止滑動的實現

2019-10-23 18:29:10
字體:
來源:轉載
供稿:網友

前言

現在很多app,首頁不允許滑動切換(因為頁面加載吧),但是又用viewpage來管理frgament.因為方便嘛.

以前在網上找的例子:

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) {   //不攔截,否則子孩子都無法收到事件,一般這個自定義的時候都不作處理 return super.dispatchTouchEvent(ev);  } @Override public boolean onInterceptTouchEvent(MotionEvent ev) {  return super.onInterceptTouchEvent(ev); }  @Override public boolean onTouchEvent(MotionEvent ev) {   return true; }

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

但是如果你編譯時用是高版本的api,5.0以后吧.上面這個自定義就會失效,

你會發現,會有細微的滑動.還是能滑動的

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

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

由于之前改viewpager做懶加載.一直保留了一個老版本的Viewpager使用.直到最近才發現.

改進后

public class NoScrollViewPager extends ViewPager { private boolean isScroll;public NoScrollViewPager(Context context,AttributeSetattrs{  super(context, attrs);  }  public NoScrollViewPager(Context context) {    super(context);  } /**  * 1.dispatchTouchEvent一般情況不做處理 *,如果修改了默認的返回值,子孩子都無法收到事件  */  @Override public boolean dispatchTouchEvent(MotionEvent ev) {        return super.dispatchTouchEvent(ev); // return true;不行  }  /**  * 是否攔截  * 攔截:會走到自己的onTouchEvent方法里面來  * 不攔截:事件傳遞給子孩子  */  @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // return false;//可行,不攔截事件,  // return true;//不行,孩子無法處理事件  //return super.onInterceptTouchEvent(ev);//不行,會有細微移動  if (isScroll){    return super.onInterceptTouchEvent(ev); }else{    return false; } }  /**  * 是否消費事件  * 消費:事件就結束  * 不消費:往父控件傳  */ @Override  public boolean onTouchEvent(MotionEvent ev) {  //return false;// 可行,不消費,傳給父控件  //return true;// 可行,消費,攔截事件  //super.onTouchEvent(ev); //不行, //雖然onInterceptTouchEvent中攔截了, //但是如果viewpage里面子控件不是viewgroup,還是會調用這個方法.  if (isScroll){   return super.onTouchEvent(ev); }else {    return true;// 可行,消費,攔截事件 } } public void setScroll(boolean scroll) {  isScroll = scroll; }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 多伦县| 苏尼特左旗| 五莲县| 洪湖市| 汤原县| 兴宁市| 新宁县| 永年县| 高青县| 会东县| 黔南| 北安市| 九台市| 漳浦县| 广州市| 台南市| 合作市| 东兴市| 从江县| 鹿泉市| 水城县| 武川县| 吉木乃县| 榆中县| 和龙市| 繁昌县| 宜川县| 盘山县| 修武县| 万源市| 大埔县| 福贡县| 当阳市| 泌阳县| 通州市| 宁阳县| 忻州市| 工布江达县| 边坝县| 神农架林区| 广灵县|