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

2、和TabLayout一起使用的时候,点击TabLayout上的按钮还会有滑动的效果,接下来的处理super.setCurrentItem(item, false);表示切换的时候,不需要切换时间。 
就可以去掉那个滑动效果了

public class NoScrollViewPager extends ViewPager {
private boolean noScroll = false; public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
} 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) {
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, false);//表示切换的时候,不需要切换时间。 } }

TabLayout+ViewPager取消滑动,留点击,消除滑动出现的左右移动bug

public class BanViewPager extends ViewPager {

private boolean isCanScroll = true;

public BanViewPager(Context context) {

      super(context);

}

public BanViewPager(Context context, AttributeSet attrs) {

        super(context, attrs);

}

public void setNoScroll(boolean noScroll) {

        this.isCanScroll = noScroll;

}

@Override

public void scrollTo(int x, int y) {

      super.scrollTo(x, y);

}

@Override

public boolean onTouchEvent(MotionEvent arg0) {

    if (isCanScroll){

            return false;

    }else{

           return super.onTouchEvent(arg0);

   }

}

@Override

public boolean onInterceptTouchEvent(MotionEvent arg0) {

      if (isCanScroll){

              return false;

      }else{

            return super.onInterceptTouchEvent(arg0);

      }

    }

}

自定义的ViewPager和其他网上的基本大同小异!起最后关键的东西要出现了,请看xml布局文件

布局文件:

<android.support.design.widget.TabLayout

        android:id="@+id/tablayout"

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       app:tabIndicatorColor="@color/indigo"

       app:tabTextColor="@color/time_item_gray"

       app:tabSelectedTextColor="@color/indigo">

</android.support.design.widget.TabLayout>

<com.hengsu.moran.profile.model.BanViewPager

       android:id="@+id/viewpage"

      android:layout_width="match_parent"

      android:layout_height="wrap_content"

       android:isScrollContainer="true">

</com.hengsu.moran.profile.model.BanViewPager>

一般的这样自定义就可以解决TabLayout下面的ViewPager的滑动,但是细心的同学,依然发现有滑动出现的左右移动bug!!!并没有全部固定ViewPager,看了xml布局文件,细心的同学会发现,我在自定义的Viewpager控件中加了

android:isScrollContainer="true"

表示可以滚动的,然后我们就可以解决滑块出现的滑动出现左右移动bug!

Android TabLayout+ViewPager禁止滑动的更多相关文章

  1. ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法

    一.上图 二.场景描写叙述 最近在做项目的时候.遇到一个怪异的需求,描写叙述例如以下: 1.ViewPager中嵌套3个View,当从View1滑动到View2时禁止ViewPager的滑动事件. 2 ...

  2. Android中ViewPager实现滑动条及与Fragment结合的实例教程

    ViewPager类主要被用来实现可滑动的视图功能,这里我们就来共同学习Android中ViewPager实现滑动条及与Fragment结合的实例教程,需要的朋友可以参考下 自主实现滑动指示条先上一个 ...

  3. 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)

    1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...

  4. TabLayoutViewPagerDemo【TabLayout+ViewPager可滑动】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用TabLayout搭配ViewPager实现可滑动的顶部选项卡效果. 效果图 代码分析 1.演示常规的设置. 2.通过自定义Vi ...

  5. android之ViewPager修改滑动速度

    在android中,使用过viewpager的人都清楚,我们如果使用viewpager进行滑动时,如果通过手指滑动来进行的话,可以根据手指滑动的距离来实现,但是如果通过setCurrentItem函数 ...

  6. Android利用ViewPager实现滑动广告板

    •android-support-v4.jar,这是谷歌官方 给我们提供的一个兼容低版本Android设备的软件包,里面包囊了只有在Android3.0以上可以使用的api.而ViewPager就是其 ...

  7. Android重写ViewPager改动滑动灵敏度

        使用ViewPager作为一个页面进行切换.里面能够存放非常多View,但有时在操作View时不小心滑动一下就有可能跳到下一页,这并非我们想要的,这里就须要重写ViewPager改动它的滑动条 ...

  8. android scrollview组件禁止滑动的方法

    xml配置:           android:id="@+id/sc_freement"             android:layout_width="fill ...

  9. Viewpager禁止滑动

    参考:http://www.jianshu.com/p/d3d766cf73d7 public class NoScrollViewPager extends ViewPager { private ...

随机推荐

  1. 配置postgreSQL允许外部连接

    配置远 程连接PostgreSQL数据库的步骤很简单,只需要修改 %PostgreSQL_path%/data 目录下的 pg_hba.conf 和 postgresql.conf. 一.修改pg_h ...

  2. Spring boot application.properties 配置

    原文链接: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.ht ...

  3. (转)Bootstrap 之 Metronic 模板的学习之路 - (6)自定义和扩展

    https://segmentfault.com/a/1190000006815041 前面我们将 Metronic 的结构和源码大致浏览了一遍,Metronic 整个文件包有三百多兆,在实际项目中, ...

  4. 优动漫PAINT核心功能介绍

    优动漫PAINT是一款功能强大的动漫绘图软件,适用于个人和专业团队创作,分为个人版和EX版.搭载了绘制漫画和插画所需的所有功能——丰富的笔工具.超强的笔压感应和手颤修正功能,可分别满足画师对于插画.漫 ...

  5. C语言提高 (6) 第六天 文件(续) 链表的操作

    1昨日回顾 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include &l ...

  6. CSS3 创建简单的网页动画 – 实现弹跳球动

    基础准备对于这个实现,我们需要一个简单的 div ,并且样式类名为 ball : HTML 代码: <div class="ball"></div> 我们将 ...

  7. CSS中选择器优先级的权重计算

    CSS中选择器优先级的权重计算 先看一段代码,如下: a{ color: red; } #box a{ color: green; } [class="box"] a{ color ...

  8. Java基础学习总结(62)——Java中的流和Socket

    按行读入方式: BufferedReader(); 1.以行为读取单位,读取比较方便. 按行读一般都是字符读. BufferedReader和PrintWriter的内存分析图: 数据流: 输入 输出 ...

  9. Matlab中的函数句柄@

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50699990 @是Matlab中的句柄 ...

  10. svn查看工程版本库的url地址

    打开cmd,cd到工程目录,使用svn的命令:svn info 完.