Android 禁止ViewPager的滑動效果
阿新 • • 發佈:2018-12-29
ViewPager其實是一個非常好的控制元件、控制元件容器。
而且ViewPager的滑動效果其實非常好,但是偶爾應用的需求會需要禁止它的滑動。
本人的一個專案中就遇到了,主要原因是ViewPager的View中有一個載入了ListView控制元件,而ListView是自定義的Item可滑動的控制元件,所以左右滑動效果衝突了。那麼就需要禁止ViewPager的滑動效果來遷就ListView,因為ViewPager可以使用點選來完成,而ListView的滑動效果更佳。
好了,介紹方法,好了不用介紹了,直接上程式碼吧。
1. 自定義ViewPager,
package com.gopain.TYT.beans; import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class MyViewPager extends ViewPager { private boolean scroll = true; public MyViewPager(Context context) { super(context); } public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public void setScroll(boolean scroll) { this.scroll = scroll; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); } @Override public boolean onTouchEvent(MotionEvent arg0) { /*return false;//super.onTouchEvent(arg0);*/ if(scroll) return false; else return super.onTouchEvent(arg0); } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { if(scroll) return false; else return super.onInterceptTouchEvent(arg0); } @Override public void setCurrentItem(int item, boolean smoothScroll) { super.setCurrentItem(item, smoothScroll); } @Override public void setCurrentItem(int item) { super.setCurrentItem(item); } }
不用修改,直接拿去用吧,因為ViewPager的功能沒有改變,只是修改了一個滑動效果,完全不會影響控制元件的其它功能。
那麼使用的時候java呼叫程式碼、介面卡什麼的都不會變。
只是在xml定義佈局時需要修改,如
<com.gopain.TYT.beans.MyViewPager android:id="@+id/tabpager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> </com.gopain.TYT.beans.MyViewPager>
好了,其它的都不會變的,放心使用吧!