开发者社区> 林冠宏> 正文

android 布局 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题

简介: 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题。   我的问题原型:        这个问题,我相信遇到的人会比较少,我是在 一个 viewPager 中,其中 一个 fragment 中实现了长按滑动图片的功能,而发现它们两者的 onTouchEvent事件冲突。
+关注继续查看

使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题。

 

我的问题原型:

 

     这个问题,我相信遇到的人会比较少,我是在 一个 viewPager 中,其中 一个 fragment 中实现了长按滑动图片的功能,而发现它们两者的

onTouchEvent事件冲突。

 

尝试过的解决方法:

    1-----

     遇到这问题,首先是百度,百度到的方法有,自定义 viewPager,在里面重写    onTouchEvent  和 onInterceptTouchEvent,具体代码是下面,这种方法,我尝试

后发现,只能在第一次加载 viewPager的 页面达到 阻断的效果,我这里详细说下,在MainActivity 页面里面,我们初始化了 viewPager,然后我们要在 第二个页面的

fragment 中实现阻断,这时候,你可能会尝试 在 fragment 中new 一个 MainActivity 的对象,然后想方设法 获取它 里面的 viewPager,或者是 引入与 MainActivity

绑定好了的 xml文件,再 在 fragment 中 findViewById() 来获取次 viewPager。 然后使用 自定义 viewPager 里面的 函数。

     很不幸,我上述谈到的方法,我都试过了, all failed。

 

 1 package com.LGH.weixin;
 2 
 3 /**
 4  * Created by Administrator on 2015/5/30.
 5  */
 6 import android.content.Context;
 7 import android.support.v4.view.ViewPager;
 8 import android.util.AttributeSet;
 9 import android.util.Log;
10 import android.view.MotionEvent;
11 
12 
13 public class myViewPager extends ViewPager {
14 
15     private boolean enabled = true; // 默认是 可以侧滑的
16 
17 
18     public myViewPager(Context context, AttributeSet attrs) {
19         super(context, attrs);
20     }
21 
22     public void setStopViewPagerSlip(boolean enabled){
23         this.enabled = enabled;
24         Log.i("--------------------","////"+this.enabled);
25     }
26     //触摸没有反应就可以了
27     @Override
28     public boolean onTouchEvent(MotionEvent event) {
29         if (this.enabled) {
30             return super.onTouchEvent(event);
31         }
32         return false;
33     }
34 
35 
36     @Override
37     public boolean onInterceptTouchEvent(MotionEvent event) {
38         if (this.enabled) {
39             return super.onInterceptTouchEvent(event);
40         }
41         return false;
42     }
43 }

 

      2-----

       第二种方法是我最后真正解决了的。刚开始的时候,使用有误,导致失败。

       方法: view.requestDisallowInterceptTouchEvent(true); //传入参数是 true 即可

       我第一次使用它失败的原因是:

            在 我的 fragment中,由于 viewPager 它本是就是一个 view,所以 我使用 该方法的时候,就直接 

            viewPager .requestDisallowInterceptTouchEvent(true); 结果是失败的。  在子 view 中正确使用方法是 下面 ↓

 

    解决方法:

    view.requestDisallowInterceptTouchEvent(true);中使用的 view 要求是你当前 fragment 引入的xml 返回的 view,而且 改为:

    view.getParent().requestDisallowInterceptTouchEvent(true);

    此时方能真正解决!  下面 引入些必要的 代码。

     

1 View main = inflater.inflate(R.layout.apart_center,container,false);
1 main.getParent().requestDisallowInterceptTouchEvent(true);

 

如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力


img_12e3f54d4d0f70f0eb14f20548e3d781.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
28 0
Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)
Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)
121 0
Android 天气APP(二十三)增加灾害预警、优化主页面UI
Android 天气APP(二十三)增加灾害预警、优化主页面UI
124 0
Android 天气APP(十)继续优化、下拉刷新页面天气数据
Android 天气APP(十)继续优化、下拉刷新页面天气数据
65 0
【Android】如何实现页面的跳转
此笔记是承上启下的,关于为页面添加响应的内容请详看【Android】如何为组件添加响应 要实现两个页面间的跳转,肯定要有两个界面,这里展示如何创建一个空的Activity文件
265 0
XPage 一个非常方便的Android Fragment页面框架
XPage 一个非常方便的Android Fragment页面框架
391 0
如何打开APP在应用市场中对应的的activity页面---Android拓展篇
如何打开APP在应用市场中对应的的activity页面---Android拓展篇
94 0
Android中 如何在本Activity页面退出后回到首页或者指定的Activity入口
Android中 如何在本Activity页面退出后回到首页或者指定的Activity入口
1028 0
快速查看Android原生应用中的H5页面
现在移动应用中内嵌webview的场景越来越多了,我们经常会有这样的需要,出于想要调试某个H5页面或者测试某个H5页面的性能,我们需要得到该页面的地址,但一时找不到负责这个页面的开发同学,今天就跟大家分享一下如何快速查看native应用中的H5页面地址。
433 0
Android魔术系列:一步步实现对折页面
这是很久之前的一篇文章了,最近有人提到了就想起来了,正好在这里还没发布过,就重新整理一下发出来吧。这个系列也搁置了很久了,看看能不能重新启动起来。 本篇文章主要去实现一个对折页面的效果,主要来学习Android中的截屏、Bitmap处理及canvas绘制这些知识。
110 0
Android/Unity混合开发屏幕旋转问题以及8.0透明页面兼容
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
377 0
【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
410 0
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )(三)
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )(三)
172 0
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )(二)
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )(二)
162 0
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )(一)
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )(一)
217 0
+关注
林冠宏
talk is cheap ,go to see my github : https://github.com/af913337456
文章
问答
视频
相关电子书
更多
蚂蚁聚宝Android秒级编译——Freeline
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像