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

我的问题原型:

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

onTouchEvent事件冲突。

尝试过的解决方法:

1-----

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

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

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

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

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

 package com.LGH.weixin;

 /**
* Created by Administrator on 2015/5/30.
*/
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent; public class myViewPager extends ViewPager { private boolean enabled = true; // 默认是 可以侧滑的 public myViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
} public void setStopViewPagerSlip(boolean enabled){
this.enabled = enabled;
Log.i("--------------------","////"+this.enabled);
}
//触摸没有反应就可以了
@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;
}
}

2-----

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

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

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

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

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

解决方法:

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

view.getParent().requestDisallowInterceptTouchEvent(true);

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

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

android 布局 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题的更多相关文章

  1. Android开发之viewpager导报错误解决方法:错误代码 Caused by: java.lang.ClassNotFoundException: Didn't find class

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 Caused by: java.lang.ClassNotFoundException: Didn't ...

  2. html页面使用前端框架布局时,弹出子页面等情况若出现布局混乱,可能是回发导致

    解决方法:需要带调用 弹框 那里 写一段return false防止回发

  3. 【我的Android进阶之旅】Android Studio查看Logcat时,如果一行Log太长如何换行显示?

    使用Android Studio一段时间了,还有很多小技巧没有掌握.今天又发现了一个比较好用的小技巧,这里分享出来. 1.Android Studio默认显示效果 比如我们用Logcat来查看打印的L ...

  4. 解决ios手机页面overflow scroll滑动很卡的问题

    在移动端html中经常出现横向/纵向滚动的效果,但是在iPhone中滚动速度很慢,感觉不流畅,有种卡卡的感觉,但是在安卓设备上没有这种感觉; 要解决这个问题很简单: 一行代码搞定 -webkit-ov ...

  5. Android View的事件分发机制和滑动冲突解决方案

    这篇文章会先讲Android中View的事件分发机制,然后再介绍Android滑动冲突的形成原因并给出解决方案.因水平有限,讲的不会太过深入,只希望各位看了之后对事件分发机制的流程有个大概的概念,并且 ...

  6. 解决TextView多行滑动与NestedScrollView等,滑动冲突,我的解决方案

    1.首先要明白,什么时候回TextView处理滑动,什么时候不处理滑动 1.1往上滑动,到达文本底部就不要再处理了,如果往上滑动不在底部则继续TextView滑动 1.2往下滑动,到达文本顶部就不要再 ...

  7. 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。

    (转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/lingu ...

  8. android控件拖动,移动、解决父布局重绘时控件回到原点

    这是主要代码: 保证其params发生改变,相对于父布局的位置就能达到位置移动到原来的位置 // 每次移动都要设置其layout,不然由于父布局可能嵌套listview,当父布局发生改变冲毁(如下拉刷 ...

  9. 【Android 应用开发】Android中使用ViewPager制作广告栏效果 - 解决ViewPager占满全屏页面适配问题

    . 参考界面 : 携程app首页的广告栏, 使用ViewPager实现        自制页面效果图 : 源码下载地址: http://download.csdn.net/detail/han1202 ...

随机推荐

  1. NFSv4的引用,迁移和备份(用户手册 v0.2)

    RFC3530 定义了NFS文件系统迁移和引用的管理机制.文件系统定位功能通过fs_location属性向客户端提供文件系统的位置信息.fs_location属 性是一个包含有位置信息的列表,位置信息 ...

  2. webform 上传

    要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.value.le ...

  3. Ubuntu14.04或16.04下安装JDK1.8+Scala+Hadoop2.7.3+Spark2.0.2

    为了将Hadoop和Spark的安装简单化,今日写下此帖. 首先,要看手头有多少机器,要安装伪分布式的Hadoop+Spark还是完全分布式的,这里分别记录. 1. 伪分布式安装 伪分布式的Hadoo ...

  4. Python之路Day20-Django一对一(多)以及Ajax

    上节内容回顾 问题一:Django请求生命周期 -> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串-> URL对应关系(匹配) -> 视图函数 -> ...

  5. 如果你想真正了解Struts2,不妨可以进来看看

    首先我们就一起来认识认识Struts2到底是什么?作为框架,它又是用来处理哪些问题的呢?正所谓脚踏实地走,即时离梦想会远一点,但却很真实,那我们就一步一步的来了解Struts2吧!      一.既然 ...

  6. ARM 编译 phddns

    参考博文http://bluegemyf.blog.163.com/blog/static/11816340201310472751513/ 1.安装必要的开发包 sudo apt-get  inst ...

  7. 深入理解OAuth2.0协议

    1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...

  8. Android课程---关于数据存储的学习之总结

  9. window.onload与$(document).ready()的区别

    对于很多初学者来说,window.onload出现在代码中的频率非常高,这似乎变成了一种习惯,可是并不知道具体为什么要加这句代码,可以做几个试验对比: 实验一: <script> docu ...

  10. eclipse配置javah命令

    1.找到javah命令所在的目录    我的为 /usr/bin/javah 2.打开eclipse     如图点击第二项 3.配置  如图 ${project_loc}/src -classpat ...