禁止滑動的NoScrollViewPager
大家經常會使用ViewPager+Fragment,然後在fragment中會有左右滑動的view,當view滑動到最右邊時會自動滑到viewpager的下一個item,如果專案要求ViewPager禁止自動滑動,這自定義的ViewPager就對你有用了!
public class NoScrollViewPager extends ViewPager {
private boolean noScroll = false;public NoScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); }public NoScrollViewPager(Context context) { super(context); }public void setNoScroll(boolean noScroll) { this.noScroll = noScroll; }@Overridepublic void scrollTo(int x, int y) { super.scrollTo(x, y); }@Overridepublic boolean onTouchEvent(MotionEvent arg0) { if (noScroll) return false; else return super.onTouchEvent(arg0); }@Overridepublic boolean onInterceptTouchEvent(MotionEvent arg0) { if (noScroll) return false; else return super.onInterceptTouchEvent(arg0); }@Overridepublic void setCurrentItem(int item, boolean smoothScroll) { super.setCurrentItem(item, smoothScroll); }@Overridepublic void setCurrentItem(int item) { super.setCurrentItem(item); }
}
用法 在xml中引入,在activity中viewpager.setNoScroll(true);就行了
其實就是處理了一下點選事件,
public boolean onInterceptTouchEvent(MotionEvent ev)
該方法使用者攔截被傳遞過來的事件,用於判斷被傳遞過來的事件是否需要被當前的view進行處理。
return false : 不對事件進行攔截,放行該事件。事件會被傳遞到當前view的子控制元件中,由子控制元件中的dispatchTouchEvent方法進行分發處理。 return true : 攔截該事件,將該事件交給當前view的onTouchEvent方法進行處理。 return super.inInterceptTouchEvent(ev):預設攔截方式,和return true一樣。該事件會被攔截,將該事件交給當前view的onTouchEvent方法進行處理。
我的理解是NoScrollViewPager中的onInterceptTouchEvent方法返回了了false,則沒有消費此事件,會想下傳遞,但是他又沒有子View了!!!
我也就個人理解,,歡迎大家指正!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4692/viewspace-2812858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Listview禁止滑動View
- 小程式禁止swiper滑動
- Android 禁止ViewPager左右滑動AndroidViewpager
- ViewPager 禁止左右滑動完美解決Viewpager
- 聊天平臺原始碼,簡單使用 禁止滑動和設定滑動方向原始碼
- 直播商城原始碼,隱藏iframe捲軸,並禁止滑動原始碼
- app直播原始碼,彈出層 加遮罩層 頁面禁止滑動APP原始碼遮罩
- web前端仿手機左右滑動(手滑+自動滑動)Web前端
- 禁止頁面滾動的方法
- 移動端左滑右滑元件元件
- uniapp---app滑動翻頁(上滑、下滑、左滑、右滑)APP
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- jQuery 效果 – 滑動jQuery
- Flutter迴圈滑動的PageViewFlutterView
- 左右迴圈滑動的viewpagerViewpager
- chrome 禁止自動更新Chrome
- 禁止TreeView自動PostbackView
- 一對一原始碼,滑塊驗證,滑塊左右滑動顯示的位置原始碼
- 關於彈窗的內部滑動穿透底層頁面的滑動的問題穿透
- JavaScript左右拖動滑動的按鈕效果JavaScript
- 直播app開發,滑動式的頂部導航欄(左右橫向滑動)APP
- 直播平臺開發,自定義中間向兩邊滑動的滑動條
- 粘性控制元件,滑動停留StickLayout(導航欄滑動停留)控制元件
- Flutter 滑動體系Flutter
- Swift全屏滑動返回Swift
- 滑動條:QSliderIDE
- 仿 “即刻APP” 滑動返回的效果APP
- RecyclerView滑動到指定Position的方法View
- 直播系統app原始碼,自定義中間向兩邊滑動的滑動條APP原始碼
- UIPikerView 省市區三聯滑動,解決滑動崩潰問題UIView
- 擼一款”靈動“的滑動按鈕
- CollectionView 單個選項卡的滑動View
- 關閉BottomNavigationView的滑動動畫NavigationView動畫
- iOS UITableViewCell允許滑動的處理iOSUIView
- js滑動門及對像的使用JS
- flutter 中監聽滑動事件Flutter事件
- uniapp 滑動切換APP
- CSS滑動門技術CSS