文档章节

最靠谱的禁止ViewPager滑动方法

JayPark不作死
 JayPark不作死
发布于 2014/10/13 11:07
字数 207
阅读 28597
收藏 2

最近做项目要求某种情况下ViewPager不能滑动,在网上找了一圈。有说重写Ontouch的,各种。都试了试,基本都不可用。 

自己看ViewPager源码,知道VIewPager移动全部都调用了scrollTo方法,这个是View的方法,那么我们只需要重写这个方法就可以禁止ViewPager滑动 

Java代码

  1. public class CustomViewPager extends ViewPager {  

  2.   

  3.     private boolean isCanScroll = true;  

  4.   

  5.     public CustomViewPager(Context context) {  

  6.         super(context);  

  7.     }  

  8.   

  9.     public CustomViewPager(Context context, AttributeSet attrs) {  

  10.         super(context, attrs);  

  11.     }  

  12.   

  13.     public void setScanScroll(boolean isCanScroll){  

  14.         this.isCanScroll = isCanScroll;  

  15.     }  

  16.   

  17.   

  18.     @Override  

  19.     public void scrollTo(int x, int y){  

  20.         if (isCanScroll){  

  21.             super.scrollTo(x, y);  

  22.         }  

  23.     }  

此时,ViewPager.setCurretItem方法也会失效,想通过点击Tab button 切换page也无法实现。

二、setOnTouchListener

ViewPager.setOnTouchListener(new View.OnTouchListener(){

        on touch ( xx ){

                return true;

        }

});

这种方式可以实现只禁止滑动翻页,可以通过setCurrentItem,来切换页面。

本文转载自:http://blog.csdn.net/hero_zhouwu/article/details/9071355

共有 人打赏支持
JayPark不作死
粉丝 15
博文 51
码字总数 13622
作品 0
苏州
程序员
加载中

评论(2)

嘘不要声张
嘘不要声张
可以解决滑动问题,不错
Common1140
Common1140
使用setOnTouchListener时,可以禁止左右滑动,但是效果不太好,左右两边会出现一点上一个页面的!
根据Fragment布局高度来自动适应的Viewpager

在最近的项目中,要用到ViewPager,但是viewpager是放在recycleview里面,高度是不确定的,只好重写measure方法来根据子布局的高度来动态生成viewpager的高度,但是有个缺点,就是不能根据子...

遇见sunshine
07/04
0
0
Android 打造一个丝滑的自动轮播控件

现在很多的 App 都有自动轮播的 banner 界面,用于展示广告图片或者显示当前比较热门的一些活动,除了具备比较酷炫的效果之外,通过轮播的方式来减少对界面的占用,也是很赞的一个设计点。本...

developerHaoz
08/08
0
0
android中ViewPager详解--视图滑动、界面卡等效果 (一)

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一。利用它,我们可以做很多事情,从最简单的导航,到页面菜单...

一别经年
2014/01/21
0
0
ViewPager实现循环滑动

在网上看到了viewpager之后自己看了看,效果不错,同样eoe社区也有很多相关的文章,比如http://www.eoeandroid.com/forum.php?mod=viewthread&tid=157771&page=21#pid1384160,大家可以看看,...

MrLovelyCbb
2012/05/08
0
3
Android ViewPager使用详解

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等...

Remix_jx
2014/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

困扰当前数据中心管理的三大难题

导读 当企业发展到一定程度,或者之前的机房不能满足现在的数据中心使用时,企业会对数据中心进行迁移。那么在数据中心进行迁移的时候会遇到哪些风险呢?针对这些风险我们应该做出怎样的措施来...

问题终结者
10分钟前
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
26分钟前
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
34分钟前
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
41分钟前
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部