亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Android中利用Viewpager取消滑動

發布時間:2020-12-04 17:20:26 來源:億速云 閱讀:211 作者:Leah 欄目:移動開發

這期內容當中小編將會給大家帶來有關如何在Android中利用Viewpager取消滑動,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

前言

現在很多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;
 }
}

上述就是小編為大家分享的如何在Android中利用Viewpager取消滑動了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云南省| 葫芦岛市| 始兴县| 都匀市| 临城县| 基隆市| 甘孜县| 尼木县| 庄河市| 晋江市| 大化| 丰镇市| 宾川县| 青龙| 景宁| 海原县| 虎林市| 金湖县| 新宁县| 沙坪坝区| 鲁甸县| 姚安县| 延寿县| 内丘县| 望谟县| 凭祥市| 安徽省| 无锡市| 桃园县| 禄丰县| 建昌县| 雷山县| 黎川县| 麻江县| 五寨县| 上蔡县| 灵寿县| 偃师市| 宁夏| 驻马店市| 五台县|