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>

好了,其它的都不会变的,放心使用吧!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐