Android 禁止ViewPager的滑动效果

原创 2014年01月31日 22:20:43

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>

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

ViewPager动态开启和禁用左右滑动功能

public class MyViewPager extends ViewPager { public boolean isScroll=false; public boolean ...
  • Johngq
  • Johngq
  • 2017年06月01日 09:36
  • 747

android Viewpager禁用/开启滑动切换功能

要实现viewpager的滑动以及禁止滑动切换功能只需要继承viewpager,在onTouchEvent进行逻辑判断即可(网上搜到的,确实可行,原创地址不明),下面自己实现一个 public cla...
  • believer123
  • believer123
  • 2014年11月28日 16:20
  • 2033

ViewPager+Fragment取消预加载以及禁止滑动

取消预加载网上了解了很多取消预加载的方法,里面提到了使用一个viewpager的public方法setOffscreenPageLimit 经过查看源码以及验证发现该方法是管理Viewpager预加载...
  • lhj1076880929
  • lhj1076880929
  • 2016年09月02日 12:08
  • 2408

Android之禁止ViewPager滑动

当我们想在同一个Activity或者Fragment中展示多个页面时往往会用到ViewPager,通过滑动,我们可以很方便地在不同的页面中切换。但是在某些情况下我们可能并不需要通过滑动来切换ViewP...
  • Lindroid20
  • Lindroid20
  • 2016年09月03日 21:43
  • 345

viewpage禁止滑动--android

最近写一个项目,涉及到viewpager,而变态的客户要求不滑动。     方法很简单                 重写viewpager就可以了,现在将代码贴出. import and...
  • weiyage
  • weiyage
  • 2012年11月12日 16:52
  • 15393

自定义ViewPager 禁止滑动和去除滑动效果

自定义ViewPager 禁止滑动和去除滑动效果 仿微信去除点击底部按钮 viewPager 页面切换效果 同时可以手动设置viewPager的是否可以手动滑动 viewPager.setNo...
  • u014454120
  • u014454120
  • 2016年09月14日 10:14
  • 3862

android 禁止ViewPager滑动

android 禁止ViewPager滑动
  • coderinchina
  • coderinchina
  • 2015年01月03日 01:03
  • 1023

Android ViewPager 禁止横向滑动

之前在项目中需要使用CoordinatorLayout + ViewPager,但是实际操作体验不好,CoordinatorLayout 上滑时,很容易顺带把ViewPager横向滑动,于是变写了个禁...
  • zzzccj
  • zzzccj
  • 2017年01月19日 18:42
  • 129

Android 禁止ViewPager滑动,你所不知道的细节

要实现禁止ViewPager的滑动,要怎么实现呢? 第一想到就是继承ViewPager,重写ViewPager的TouchEvent事件,在TouchEvent的事件中不作任何直接return tr...
  • jxiang112
  • jxiang112
  • 2016年06月17日 18:41
  • 1611

去除ViewPager界面切换动画、禁止滑动

public class ViewPagerScroller extends Scroller { private int mScrollDuration = 2000; ...
  • Rlingge
  • Rlingge
  • 2016年03月25日 16:21
  • 8103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 禁止ViewPager的滑动效果
举报原因:
原因补充:

(最多只允许输入30个字)