前言

现在很多app,首页不允许滑动切换(因为页面加载吧),但是又用viewpage来管理frgament.因为方便嘛.
以前在网上找的例子:
public class NoScrollViewPager extends ViewPager {
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoScrollViewPager(Context context) {
super(context);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//不拦截,否则子孩子都无法收到事件,一般这个自定义的时候都不作处理
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return true;
}
这个自定义如果继承的Viewpager是低版本的,那么是没问题的.
但是如果你编译时用是高版本的api,5.0以后吧.上面这个自定义就会失效,
你会发现,会有细微的滑动.还是能滑动的
判断老的还是新的,看setOnPageChangeListener就知道了
最新的Viewpager里面这个方法已经废弃了,改成addOnPageChangeListener()了.
由于之前改viewpager做懒加载.一直保留了一个老版本的Viewpager使用.直到最近才发现.
改进后
public class NoScrollViewPager extends ViewPager {
private boolean isScroll;
public NoScrollViewPager(Context context,AttributeSetattrs{
super(context, attrs);
}
public NoScrollViewPager(Context context) {
super(context);
}
/**
* 1.dispatchTouchEvent一般情况不做处理
*,如果修改了默认的返回值,子孩子都无法收到事件
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev); // return true;不行
}
/**
* 是否拦截
* 拦截:会走到自己的onTouchEvent方法里面来
* 不拦截:事件传递给子孩子
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// return false;//可行,不拦截事件,
// return true;//不行,孩子无法处理事件
//return super.onInterceptTouchEvent(ev);//不行,会有细微移动
if (isScroll){
return super.onInterceptTouchEvent(ev);
}else{
return false;
}
}
/**
* 是否消费事件
* 消费:事件就结束
* 不消费:往父控件传
*/
@Override
public boolean onTouchEvent(MotionEvent ev) {
//return false;// 可行,不消费,传给父控件
//return true;// 可行,消费,拦截事件
//super.onTouchEvent(ev); //不行,
//虽然onInterceptTouchEvent中拦截了,
//但是如果viewpage里面子控件不是viewgroup,还是会调用这个方法.
if (isScroll){
return super.onTouchEvent(ev);
}else {
return true;// 可行,消费,拦截事件
}
}
public void setScroll(boolean scroll) {
isScroll = scroll;
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# viewpager禁止滑动
# 禁止滑动的viewpager
# android
# 禁止滑动
# Android viewpage实现禁止滑动的功能
# Android viewpage实现可控制的禁止滑动
# 自定义
# 会有
# 自己的
# 加载
# 就会
# 如果你
# 走到
# 才发现
# 不做
# 这篇文章
# 谢谢大家
# 不作
# 首页
# 留了
# 你会发现
# 时用
# 又用
# 返回值
# 知道了
# 在网上
相关文章:
建站ABC备案流程中有哪些关键注意事项?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
如何规划企业建站流程的关键步骤?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
深圳网站制作培训,深圳哪些招聘网站比较好?
如何快速完成中国万网建站详细流程?
Thinkphp 中 distinct 的用法解析
建站之星多图banner生成与模板自定义指南
建站主机选哪家性价比最高?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Python如何创建带属性的XML节点
如何高效搭建专业期货交易平台网站?
广州商城建站系统开发成本与周期如何控制?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何在VPS电脑上快速搭建网站?
网站制作公司排行榜,抖音怎样做个人官方网站
网站制作知乎推荐,想做自己的网站用什么工具比较好?
北京网站制作公司哪家好一点,北京租房网站有哪些?
建站之星各版本价格是多少?
建站主机选哪种环境更利于SEO优化?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
表情包在线制作网站免费,表情包怎么弄?
香港服务器租用费用高吗?如何避免常见误区?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
黑客入侵网站服务器的常见手法有哪些?
如何彻底卸载建站之星软件?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何在阿里云香港服务器快速搭建网站?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
建站之星安全性能如何?防护体系能否抵御黑客入侵?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
nginx修改上传文件大小限制的方法
如何在万网开始建站?分步指南解析
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
如何设计高效校园网站?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
建站VPS推荐:2025年高性能服务器配置指南
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
建站之星安装失败:服务器环境不兼容?
Swift中switch语句区间和元组模式匹配
建站主机核心功能解析:服务器选择与网站搭建流程指南
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
常州企业网站制作公司,全国继续教育网怎么登录?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
动图在线制作网站有哪些,滑动动图图集怎么做?
*请认真填写需求信息,我们会在24小时内与您取得联系。