Android解决viewpager嵌套滑动冲突并保留侧滑菜单功能
重写子pagerview的dispatchTouchEvent方法,在返回前添加一句getParent().requestDisallowInterceptTouchEvent(true)
中断掉事件的传递,类如下
public class SupperViewPager extends ViewPager { private int screenWidth;//屏幕宽度 public SupperViewPager(Context context) { super(context); } public SupperViewPager(Context context, AttributeSet attrs) { super(context, attrs); // TODO 自动生成的构造函数存根 } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); screenWidth = MeasureSpec.getSize(widthMeasureSpec);//view测量时获取屏幕宽度 } @Override public boolean dispatchTouchEvent(MotionEvent ev) { // screenWidth = getResources().getDisplayMetrics().widthPixels; System.out.println("屏幕宽度" + screenWidth); /*判断屏幕是否满足一定条件,满足则中断时间 即,两边各留出一定宽度使靠边滑动时可以相应父pagerview 的事件,例如左边有侧滑菜单,右边靠边可以滑到另一个父viewpager的下一个*/ if (ev.getRawX() > screenWidth / 8 && ev.getRawX() < screenWidth * 7 / 8) { getParent().requestDisallowInterceptTouchEvent(true); } return super.dispatchTouchEvent(ev); } }
以上所述是小编给大家介绍的Android解决viewpager嵌套滑动冲突并保留侧滑菜单功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
Android ScrollView嵌套横向滑动控件时冲突问题
前言:今天在开发的时候遇到这样的问题,最外层是ScrollView,里面嵌套了一个横向滑动的日历控件,在滑动日历的时候很卡顿.看到这种问题,自然而然的就会想到scrollview和其他可滑动控件的冲突问题. 解决思路 用户的左右滑动操作被最外层的scrollView控件处理掉了,所以只要让scrollview对左右滑动事件不监听,让其子控件处理左右滑动事件 .重写scrollview的onInterceptTouchEvent方法,当上下滑动时不处理即可. 代码如下 public void se
-
Android嵌套滑动冲突的解决方法
android在嵌套滑动的时候会产生滑动冲突.之前我也碰到,但是以前的笔记本丢失了,所以只能重新再写一章. 一.会产生滑动冲突的情况 那么什么时候会产生滑动冲突呢?比如你有个activity,activity的上半部分是一个布局,下半部分是一个可滑动控件(RecyclerView.ListView等),或者下半部分是个viewpager,里面的fragment布局是一个可滑动控件,这样的页面就会产生滑动冲突. 二.以前的做法 虽然我以前的笔记丢失了,但是当时的解决问题的思路我依然记得. (1)重
-
详解Android中的NestedScrolling机制带你玩转嵌套滑动
一.概述 Android在support.v4包中为大家提供了两个非常神奇的类: NestedScrollingParent NestedScrollingChild 如果你从未听说过这两个类,没关系,听我慢慢介绍,你就明白这两个类可以用来干嘛了.相信大家都见识过或者使用过CoordinatorLayout,通过这个类可以非常便利的帮助我们完成一些炫丽的效果,例如下面这样的: 这样的效果就非常适合使用NestedScrolling机制去完成,并且CoordinatorLayout背后其实也是利用
-
Android中RecyclerView嵌套滑动冲突解决的代码片段
在纵向RecyclerView嵌套横向RecyclerView时,如果纵向RecyclerView有下拉刷新功能,那么内部的横向RecyclerView的横向滑动体验会很差.(只有纯横向滑动时,才能滑动内部的横向RecyclerView,否则滑动事件就会影响到下拉刷新),添加拦截判断. public class MySwipeRefreshLayout extends SwipeRefreshLayout { private boolean mIsVpDragger; private final
-
Android嵌套RecyclerView左右滑动替代自定义view
以前的左右滑动效果采用自定义scrollview或者linearlayout来实现,recyclerview可以很好的做这个功能,一般的需求就是要么一个独立的左右滑动效果,要么在一个列表里的中间部分一个左右滑动效果 而列表里面也容易,只是需要解决一点小问题,个人认为值得一提的就是高度问题,一般的人采用固定死的高度,可是在列表里面展示和机型的不同,固定死的话很难保证美观,动态的高度才能解决问题的所在 首先在一个列表控件布局上添加一个recyclerview控件 <android.support.v
-
Android解决viewpager嵌套滑动冲突并保留侧滑菜单功能
重写子pagerview的dispatchTouchEvent方法,在返回前添加一句getParent().requestDisallowInterceptTouchEvent(true)中断掉事件的传递,类如下 public class SupperViewPager extends ViewPager { private int screenWidth;//屏幕宽度 public SupperViewPager(Context context) { super(context); } pub
-
Android解决View的滑动冲突的方法
关于 Android 的 TouchEvent 事件分发机制可以看这里:Java_Android_Learn,本文讲解的是如何去解决 View 之间的滑动冲突 当父容器与子 View 都可以滑动时,就会产生滑动冲突.例如 ViewPager 中包含了 ListView 时,ViewPager 可以横向滑动,而 ListView 可以竖向滑动,此时就会产生滑动冲突.而我们之所以在使用的过程中没有发现这个问题,是因为 ViewPager 内部已经处理好滑动冲突了 解决 View 之间的滑动冲突的方法
-
View事件分发原理和ViewPager+ListView嵌套滑动冲突
目录 前言: 一个touch事件序列包括:down.move.up(其中move事件会多次触发,就是说如果手指在屏幕上多次滑动的时候会多次触发move事件,可以利用这一点实现view 的移动) ViewGroup:用来进行事件分发 View:用来对事件的处理 分发流程: Activity#dispatchTouchEvent -> PhoneWindow#superDispatchTouchEvent -> DecorView#superDispatchTouchEvent ->View
-
Android进阶NestedScroll嵌套滑动机制实现吸顶效果详解
目录 引言 1 自定义滑动布局,实现吸顶效果 1.1 滑动容器实现 1.2 嵌套滑动机制完成交互优化 1.2.1 NestedScrollingParent接口和NestedScrollingChild接口 1.2.2 预滚动阶段实现 1.2.3 滚动阶段实现 1.2.4 滚动结束 引言 在上一篇文章Android进阶宝典 -- 事件冲突怎么解决?先从Android事件分发机制开始说起中,我们详细地介绍了Android事件分发机制,其实只要页面结构复杂,联动众多就会产生事件冲突,处理不得当就是b
-
Android 解决ScrollView嵌套CridView显示问题
Android 解决ScrollView嵌套CridView显示问题 由于GridView是可滑动的控件,嵌套在ScrollView下时需要重写onMeasure方法. public class MyGridView extends GridView{ public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context) { supe
-
android中view手势滑动冲突的解决方法
Android手势事件的冲突跟点击事件的分发过程息息相关,由三个重要的方法来共同完成,分别是:dispatchTouchEvent.onInterceptTouchEvent和onTouchEvent. public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来进行事件的分发.如果事件传递到view,那么这个方法一定会被调用,返回结果受当前View的onTouchEvent和下级View的dispatchTouchEvent方法的影响,表示是
-
android自定义ViewPager水平滑动弹性效果
android ViewPager是一个经常要用到的组件,但android系统本身为我们提供的ViewPager是没有任何效果的,只能是一页一页的滑动,这样会让人感觉很死板,在看一些知名大公司的App时,看到了他们的ViewPager在滑动到最开始或者最后的时候是有一个弹性效果的,使用起来感觉非常的好,于是乎就是百度搜了一下,在StackOverflow中看到一篇文章就是讲如何实现这个效果的. 先看下效果图:滑动到最后一页时仍然可以拉动-- 代码如下: package com.example.m
-
Android组件DrawerLayout仿网易新闻v4.4侧滑菜单
概述 今天这篇博客将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在android.support.v4包下.那么,DrawerLayout是一个怎么的组件呢?我们知道,当我们使用Android上各类App的时候,是不是注意过App主页上通常有一个"侧滑菜单"?关于侧滑菜单的实现,我在前面博客里有一些介绍,想多些
随机推荐
- CMD命令详解 目录类命令(md、cd、rd、dir、path、tree、deltree)
- Java编程中使用JDBC API连接数据库和创建程序的方法
- IIS部署asp.net mvc网站的方法
- 让谷歌浏览器Google Chrome支持eWebEditor的方法
- mysql 正则表达式查询含有非数字和字符的记录
- 打印机四种进纸故障常用处理方法
- 用vbs实现配置无人登录计算机时使用的屏幕保护程序
- java struts2学习笔记之线程安全
- PHP实现的分页类定义与用法示例
- php实现压缩多个CSS与JS文件的方法
- 基于javascript实现九宫格大转盘效果
- Python使用Supervisor来管理进程的方法
- 详解jquery easyui之datagrid使用参考
- JQuery实现可编辑的表格实例讲解(2)
- JavaScript关于select的相关操作说明
- IIS中http头的作用介绍
- 做网站非常重要的一点主机性能
- CentOS下搭建Sendmail邮件服务器步骤详解
- Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置
- Spring MVC登录注册以及转换json数据