android requestDisallowInterceptTouchEvent用途

ViewPager来实现左右滑动切换tab。假设tab的某一项中嵌入了水平可滑动的View就会让你有些不爽,比方想滑动tab项中的可水平滑动的控件,却导致tab切换。

由于Android事件机制是从父View传向子View的,能够去检測你当前子View是不是在有可滑动控件等,决定事件是否拦截。可是这个麻烦,并且并不能解决全部的问题(必须检測触摸点是否在这个控件上面),事实上有比較简单的方法,在你嵌套的控件中注入ViewPager实例(调用控件的getParent()方法),然后在onTouchEvent。onInterceptTouchEvent。dispatchTouchEvent里面告诉父View。也就是ViewPager不要拦截该控件上的触摸事件。

1 requestDisallowInterceptTouchEvent(true)

代码一般例如以下:

 1 public boolean onTouch(View v, MotionEvent event) {
 2     switch (event.getAction()) {
 3     case MotionEvent.ACTION_MOVE:
 4         pager.requestDisallowInterceptTouchEvent(true);
 5         break;
 6     case MotionEvent.ACTION_UP:
 7     case MotionEvent.ACTION_CANCEL:
 8         pager.requestDisallowInterceptTouchEvent(false);
 9         break;
10     }
11 }

当用户按下的时候,我们告诉父组件。不要拦截我的事件(这当子组件能够正常响应的一个事件一时间),拿起会告诉家长成分可以预防。

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-11-07 19:39:22

android requestDisallowInterceptTouchEvent用途的相关文章

android requestDisallowInterceptTouchEvent的用途

ViewPager来实现左右滑动切换tab,如果tab的某一项中嵌入了水平可滑动的View就会让你有些不爽,比如想滑动tab项中的可水平滑动的控件,却导致tab切换. 因为Android事件机制是从父View传向子View的,可以去检测你当前子View是不是在有可滑动控件等,决定事件是否拦截,但是这个麻烦,而且并不能解决所有的问题(必须检测触摸点是否在这个控件上面),其实有比较简单的方法,在你嵌套的控件中注入ViewPager实例(调用控件的getParent()方法),然后在onTouchEv

android:versionCode和android:versionName 用途(转)

Android的版本可以在androidmainfest.xml中定义,主要有android:versionCode和android:versionName android:versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户. android:versionName:这个是我们常说明的版本号,由三部分组成<major>.<minor>.<point>,该值是个字符串,可以显

安卓---android:versionCode和android:versionName 用途

主要用于升级和自我识别,转自:http://blog.csdn.net/wh_19910525/article/details/8660416 Android的版本可以在androidmainfest.xml中定义,主要有android:versionCode和android:versionName android:versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户. android:version

android:versionCode和android:versionName 用途

Android的版本可以在androidmainfest.xml中定义,主要有android:versionCode和android:versionName android:versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户. android:versionName:这个是我们常说明的版本号,由三部分组成<major>.<minor>.<point>,该值是个字符串,可以显

Android APK用途及使用小结(待续)

Java包AXMLPrinter2.jar 用于反编译二进制的AndroidManifest.xml. 常发现解压出来的AndroidManifest.xml的文件是二进制格式,不方便查看.此时可以命令    java -jar AXMLPrinter2.jar AndroidManifest.xml >> AndroidManifest_Decoded.xml 来将xml文件转换为文本格式,以便阅读.可从中了解到包名,权限等信息. 2. aapt, adb

android 5.0之二 第一个程序

一:四大核心组件 Activity(活动) 是Android应用中负责与用户交互的组件 Service(服务) Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面 BroadcastReceiver(广播接收器) 用于接收系统中其它组件发送的广播 ContentProvider(内容提供者) 多个应用程序之间进行实时的数据交换的前提 二:工程目录结构 Android按照用途将不同的内容分别存放在不同的目录中 src文件夹 存放开发者编写的源代码 存放导

android之android.intent.category.DEFAULT的用途和使用

转载(http://blog.csdn.net/jason0539/article/details/10049899) 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent. Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: Intent intent= new Intent(this, B.class): Implicit Intent没有明确的指定要启动哪个Activity

android FakeWindow的小应用大用途

在windowmanager里面有一个FakeWindow,细致一看也就是一个透明的应用覆盖到屏幕的最前端,这样有什么优点呢?首先我们还是从应用的需求来看这个问题.在android系统里无论是手机还是平板,状态栏一般都是在的,导航栏在有些设备里面是没有的,由于android须要的那些HOME\BACK\MENU\SERCACH可能已经做在触摸屏上,或者是其它一些低成本的触摸小按键上或者硬按键上,可是也有非常多机器是没有这些的,那么就须要一个导航栏了,这样前期背景就清楚了. 有了导航栏跟状态栏,好

Android MimeType的用途以及所有类型

MIME TYPE描述 多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符.二进制格式附件等多种格式的邮件消息. 内容类型(Content-Type),这个头部领域用于指定消息的类型.一般以下面的形式出现.[type]/[subtype] type有下面的形式. Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的: Multipart:用于连接