1. 程式人生 > >Android 禁止ViewPager的滑動效果

Android 禁止ViewPager的滑動效果

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>

好了,其它的都不會變的,放心使用吧!