android 事件拦截 (Viewpager不可以左右滑动)
2024-08-29 08:40:50
以前没有做过真正的需求,所以从来没有觉得事件拦截分发处理有什么好懂的。
现在做需求了,真的是什么需求都有,你作为开发都要去研究实现。比如说,只能点不能滑动的viewpager。其实这都可以不用viewpager了。直接用fragment的replace掉就行了。那我想要不可以滑动的viewpager怎么办。
很简单,在处理事件的时候,return true表示自己处理,不往下面传递。自己消费,那如果你不想自己处理,自己不做任何处理,就 return false; 那viewpager就不会滑动了。
下面就是不可以滑动的viewpager:
禁止左右滑动 包括连续滑动也不响应
同时不影响setCurrentItem
/*
* 文件名:CustomViewPager
*/
package com.example.widget;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class CustomViewPager extends ViewPager {
private boolean enabled = false;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// 触摸事件不触发
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
// 不处理触摸拦截事件
if (this.enabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// 分发事件,这个是必须要的,如果把这个方法覆盖了,那么ViewPager的子View就接收不到事件了
if (this.enabled) {
return super.dispatchTouchEvent(event);
}
return super.dispatchTouchEvent(event);
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}
最新文章
- 记一周cdqz训练
- Echarts 之二——地市联动数据统计
- 【TYVJ1864】[Poetize I]守卫者的挑战 概率与期望
- 虚拟机和windows主机中的文件共享
- 数据库 'MessageManage' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
- 在ubuntu上搭建开发环境10---英文版ubuntu安装中文输入法
- [USACO精选] 第三章 排序
- 射频识别技术漫谈(14)——Mifare S50与S70的存取控制
- C# WinForm 类似QQ靠近屏幕边缘隐藏显示
- css控制文字自动换行
- (转载)SPARKR,对RDD操作的介绍
- Hudson持续集成服务器的安装配置与使用
- ---command line edit and histroy of perl cpan shell
- 深度学习中,使用regularization正则化(weight_decay)的好处,loss=nan
- _ZNote_Qt_对话框_模态非模态
- 深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍【转】
- bzoj4232: [Neerc2011 Northern]Kids Like Cakes
- Kubernetes 详解
- Java 泛型 详解
- 使用c#特性,给方法或类打自定义标签再反射获取