近期的项目中,有一个需求要用ViewPager中嵌套ViewPager去实现整个效果。没做不论什么处理做出来后,仅仅能不停的滑动子ViewPager,父ViewPager就无法滑动了,这样肯定是不满足的,分析了一下原因,非常显示是整个滑动事件都被子ViewPager消耗掉了,所以仅仅能对ViewPager做一下自己定义处理。才干够实现。

下面是这个需求实现后的效果图:

  

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="402" width="254" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="402" width="278" alt="">

  从图上就能够看出:我们用ViewPager中嵌套了ViewPager,并且要实现的是子ViewPager滑动到最后一页时,再滑就是滑动父ViewPager.以下将自己定义的ViewPager代码贴出来。大家能够參考下。

  

/**********************************************************
* @文件名:MyViewPager.java
* @创建时间:2014年11月18日 下午4:24:25
* @改动历史:2014年11月18日创建初始版本号
**********************************************************/
public class MyViewPager extends ViewPager
{
//父ViewPager的引用
 private ViewPager viewPager;
private boolean flag = true;
private float mLastMotionX; public BookstoreViewPager(Context context)
{
super(context);
} public BookstoreViewPager(Context context, AttributeSet attrs)
{
super(context, attrs);
} public ViewPager getViewPager()
{
return viewPager;
}
    //处理前必须调用此方法初始化冲突ViewPager
public void setViewPager(ViewPager viewPager)
{
this.viewPager = viewPager;
} @Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
final float x = ev.getX();
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
// 使父控件不处理不论什么触摸事件
viewPager.requestDisallowInterceptTouchEvent(true);
flag = true;
mLastMotionX = x;
break;
case MotionEvent.ACTION_MOVE:
if (flag)
{
if (x - mLastMotionX > 5 && getCurrentItem() == 0)
{
flag = false;
 viewPager.requestDisallowInterceptTouchEvent(false); //将事件交由父控件处理
} if (x - mLastMotionX < -5 && getCurrentItem() == getAdapter().getCount() - 1)
{
flag = false;
viewPager.requestDisallowInterceptTouchEvent(false);
}
}
break;
case MotionEvent.ACTION_UP:
viewPager.requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_CANCEL:
viewPager.requestDisallowInterceptTouchEvent(false);
break;
}
return super.dispatchTouchEvent(ev);
} }

andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager的更多相关文章

  1. viewpager与子view的事件冲突解决

    问题: 对android的事件机制一直不怎么了解,最近android项目中运用viewpager+listview (就是viewpager的子view中嵌套了listview),出现了触摸手势冲突 ...

  2. 关于在ViewPager的子页面中不能跳转的问题

    关于在ViewPager的子页面中不能跳转的问题 什么是ViewPager? 相信很多人使用过微信,其实微信的四个子页面:微信.通讯录.发现.我以及下面的引导空间就是ViewPager. 出现的问题: ...

  3. 自定义循环滑动的viewpager

    今天和大家分享一下如何定制一个可以循环滑动的viewpager.其实今天更重要的提供一种组件化思想,当然你可以理解为面向对象思想. 吐槽一下网上流行的实现方式吧(为了方便说明,下文称之为方式A),方式 ...

  4. 使用ViewPager+Fragment来实现带滚动条的多屏滑动-IndicatorFragmentActivity

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17201587 介绍 在android应用中,多屏滑动是一种很常见的风格,博主 ...

  5. Android-垂直滑动的ViewPager

    该ViewPager和正常的ViewPager的使用方式是一样的,只不过是垂直滑动的. 下面是这个ViewPager的代码 /** * 垂直滑动的ViewPager */ public class V ...

  6. vue里使用elementUI里的下拉树表格,如何定义个性化的子表格?

    最近项目写到一个业务,首先需要展示各类分组的基本信息,然后需要点击每个分组展示该分组下子的所有具体信息 一开始我是打算用tab来展示就是首先父分组的名称就是各个不同的tab按钮,然后点击按钮再展示不同 ...

  7. 自己定义ViewpagerIndicator (仿猫眼,加入边缘回弹滚动效果)

    一.概述 今天主要来分享个自己定义viewpagerindicator.效果主要是仿 猫眼电影 顶部的栏目切换.也就是我们常说的indicator,难度简单,为了让滑动时效果更炫酷,我在滑动到左边第一 ...

  8. [转]MFC子线程更改图像数据后更新主窗口图像显示方法

    程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位 ...

  9. 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 合并百度影音的离线数据 with python 第二版 基于yield

    重新整理了一下代码. 增加了bdv,mkv的处理流程. 目前暂时支持windows平台. bdv,mkv,rmvb的不同处理流程 # -*- coding: UTF-8 -*- import os i ...

  2. 华硕笔记本无法设置U盘启动,快捷启动不能识别

    最近有不少华硕笔记本用户朋友在使用U大侠装系统时,不管是使用快捷键启动还是BIOS查看,都没有发现U盘启动项,这该怎么办呢?   不要急,既然找不到启动项,那就从设置启动项来解决不就可以了. 第一种方 ...

  3. JavaSE-19 IO

    学习要点 File类操作文件和目录的属性 字节流读写文件 字符流读写文件 字节流读写二进制文件 文件操作 1  文件的定义 文件可认为是相关记录或放在一起的数据的集合.文件一般保存在硬盘.U盘.光盘. ...

  4. android网络图片自动轮播 githhub地址

    https://github.com/panxw/android-image-indicator

  5. bootstrap不兼容ie8如何解决

    说起bootstrap大家一定都不陌生,可以说是目前最受欢迎的前端框架,简洁.直观.强悍.移动设备优先的前端开发框架,让web开发更迅速.简单. 但是在实际运用中也会遇到各种各样的问题,比如最近项目中 ...

  6. 常量指针(pointer to constant)和指针常量(constant pointer)

    一个指针可以操作两个实体,一个是指针值(即地址),一个是间访值(即指向的实体).于是指针的常量性也分为两种:常量指针(pointer to constant)和指针常量(constant pointe ...

  7. Kafka生产者----向kafka写入数据

    开发者可以使用kafka内置的客户端API开发kafka应用程序.除了内置的客户端之外,kafka还提供了二进制连接协议,也就是说,我们直接向kafka网络端口发送适当的字节序列,就可以实现从Kafk ...

  8. 计算机网络概述下(OSI模型)

    1. 用什么作为计算机网络的性能的指标? 1. 速率:即数据率或称数据传输速率或者比特率.(计算机网络的最重要的一个性能指标) 单位时间(秒)传输的信息(比特)量.单位:b/s(bps),kb/s,M ...

  9. 笔试算法题(11):Josephus环 & Fibonacci序列

    出题:Josephus Cycle,约瑟夫环问题.k个数字连成一个环,第一个数字为1.首先从1开始计数删除第m个数字:然后从上次被删除的数字的下一个数字开始计数,删除第m个数字:重复进行第二步直到只剩 ...

  10. linux命令 dig-域名查询工具

    博主推荐:更多网络测试相关命令关注 网络测试  收藏linux命令大全 dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常. 语法 dig(选项)(参数) 选项 @<服务器地址&g ...