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 ViewPagerScroller extends Scroller { private int mScrollDuration = 2000; ...
  • Rlingge
  • Rlingge
  • 2016-03-25 16:21:36
  • 9131

Android禁止ViewPager的左右滑动

有时候在开发中会遇到一些“诡异”的要求,比如在ViewPager中嵌入ListView,或者再嵌入一个ViewPager,那么在滑动的时候就会造成被嵌入的XXView不能滑动了,那么现在就把最外层的V...
  • lee_tianya
  • lee_tianya
  • 2014-11-03 19:05:37
  • 37089

ViewPager手势滑动禁用

项目需求千奇百怪,不得不说作为程序员也是醉了。在项目中,老板要求安卓的用户交互风格必须和ios保持一样,ios上没有的安卓必须禁用。废话不多说,直接看项目需求。        项目中有页签分页显示的...
  • u014703311
  • u014703311
  • 2016-06-06 14:09:32
  • 3013

ViewPager的应用以及禁用滑向下一页

ViewPager 实现了ViewFlipper的效果,都是用来实现划屏的.这点用过的人都知道,不过比ViewFlipper效果人性化多了,ViewPager的应用会使得view跟着手势来回拖拽,而V...
  • keyboard_workers
  • keyboard_workers
  • 2012-06-11 17:34:12
  • 6157

ViewPager+Fragment的实现及禁止滑动

现在大部分的APP都都大致分为好几个模块,这就用到了viewpager+fragment来实现这样的效果,下面咱们就一起来实现一下这样的效果;一、实现 1、首先是activity_main.xml;...
  • lanrenxiaowen
  • lanrenxiaowen
  • 2017-05-19 13:52:29
  • 11289

如何禁止viewPage左右滑动的效果

在使用viewPage+Fragment时候,能够实现类似微信左右切换的效果
  • u012336923
  • u012336923
  • 2014-09-25 17:22:40
  • 2780

禁止viewPager滑动事件 viewPager的重写套用

很多时候由于要做图片轮播和侧边栏,如果此时MainActivity可以滑动的话想必事件头疼的事。 下边我们用最快最明了的方法禁止它的滑动。 尽管拿去,首先是viewpager的重写: ViewPa...
  • u013000304
  • u013000304
  • 2016-04-14 16:31:32
  • 1135

Android ViewPager不可滑动

viewpage 加Fragment 是现在在Android 中很常用的一种技术,实现页面滑动,但有时候某些特定的情况下可能需要viewpager 不可滑动 实现viewpager 不可滑动其实很简...
  • JHandYY
  • JHandYY
  • 2017-07-07 20:48:38
  • 681

最靠谱的禁止ViewPager滑动方法

最近做项目要求某种情况下ViewPager不能滑动,在网上找了一圈。有说重写Ontouch的,各种。都试了试,基本都不可用。  自己看ViewPager源码,知道VIewPager移动全部都调用...
  • Hero_Zhouwu
  • Hero_Zhouwu
  • 2013-06-10 15:25:59
  • 67871

处理recycleview与viewpage的滑动冲突

@Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { ...
  • qq_30983519
  • qq_30983519
  • 2017-05-25 18:03:57
  • 428
收藏助手
不良信息举报
您举报文章:Android 禁止ViewPager的滑动效果
举报原因:
原因补充:

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