zoukankan      html  css  js  c++  java
  • Android禁止ViewPager的左右滑动

           转载请注明出处:http://blog.csdn.net/allen315410/article/details/40744287

           有时候在开发中会遇到一些“诡异”的要求,比方在ViewPager中嵌入ListView,或者再嵌入一个ViewPager。那么在滑动的时候就会造成被嵌入的XXView不能滑动了。那么如今就把最外层的ViewPager禁止滑动吧,让被嵌入的XXView获得滑动事件好了。关于解决方法,网上也有非常多说法,基本上是一致的,可是须要理解这个Android下的事件分发机制才行。不明确事件分发机制的。上网查些资料看看,然后我这里也有简单的介绍。请參看博客Android自己定义控件——側滑菜单的下方。

           如何禁止ViewPager左右滑动呢?大致就是重写ViewPager,覆盖ViewPager的onInterceptTouchEvent(MotionEvent arg0)方法和onTouchEvent(MotionEvent arg0)方法。这两个方法的返回值都是boolean类型的,仅仅须要将返回值改为false。那么ViewPager就不会消耗掉手指滑动的事件了,转而传递给上层View去处理或者该事件就直接终止了。

    以下是我的自己定义ViewPager。

    public class NoScrollViewPager extends ViewPager {
    	private boolean noScroll = false;
    
    	public NoScrollViewPager(Context context, AttributeSet attrs) {
    		super(context, attrs);
    		// TODO Auto-generated constructor stub
    	}
    
    	public NoScrollViewPager(Context context) {
    		super(context);
    	}
    
    	public void setNoScroll(boolean noScroll) {
    		this.noScroll = noScroll;
    	}
    
    	@Override
    	public void scrollTo(int x, int y) {
    		super.scrollTo(x, y);
    	}
    
    	@Override
    	public boolean onTouchEvent(MotionEvent arg0) {
    		/* return false;//super.onTouchEvent(arg0); */
    		if (noScroll)
    			return false;
    		else
    			return super.onTouchEvent(arg0);
    	}
    
    	@Override
    	public boolean onInterceptTouchEvent(MotionEvent arg0) {
    		if (noScroll)
    			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里设置了一个boolean类型的控制变量,而且向外提供了控制ViewPager是否禁止滑动的方法。这样就显得灵活一点了。下面是自己定义ViewPager在布局文件里的定义。

    <com.example.studydemo.view.NoScrollViewPager
            android:id="@+id/pager"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_marginTop="5dp"
            android:layout_weight="1" />
           好吧,这个特别简单,不用再过多的介绍了。代码能够直接拷贝来使用。布局或者数据适配器PagerAdapter都是跟使用ViewPager时是一模一样的。

    好了,假设大家有什么更好的提议。能够在下方留言。我非常乐意跟大家共同学习共同进步!



  • 相关阅读:
    [转]《三国演义》人名英文翻译妙评 你也来评评!
    Effective C++:改善程序技术与设计思维的55个有效做法(第三版)(中文版)(预订)Effective C++ 3RD
    A Closer Look At Parallax Occlusion Mapping
    [转]收录全部作品,《寂静岭套装》发售开始
    [转]程序员版《桃花庵》
    Cg 1.5 Beta 2
    FilteredTextBox控件
    CollapsiblePanel控件
    DynamicPopulate控件
    HoverMenu控件的使用
  • 原文地址:https://www.cnblogs.com/llguanli/p/7057661.html
Copyright © 2011-2022 走看看