前言:今天在开发的时候遇到这样的问题,最外层是ScrollView,里面嵌套了一个横向滑动的日历控件,在滑动日历的时候很卡顿。看到这种问题,自然而然的就会想到scrollview和其他可滑动控件的冲突问题。
解决思路
用户的左右滑动操作被最外层的scrollView控件处理掉了,所以只要让scrollview对左右滑动事件不监听,让其子控件处理左右滑动事件 。重写scrollview的onInterceptTouchEvent方法,当上下滑动时不处理即可。
代码如下
public void setOnScollChangedListener(OnScollChangedListener onScollChangedListener) { this.onScollChangedListener = onScollChangedListener; } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (onScollChangedListener != null) { onScollChangedListener.onScrollChanged(this, x, y, oldx, oldy); } } public interface OnScollChangedListener { void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: xDistance = yDistance = 0f; xLast = ev.getX(); yLast = ev.getY(); break; case MotionEvent.ACTION_MOVE: final float curX = ev.getX(); final float curY = ev.getY(); xDistance += Math.abs(curX - xLast); yDistance += Math.abs(curY - yLast); xLast = curX; yLast = curY; /** * X轴滑动距离大于Y轴滑动距离,也就是用户横向滑动时,返回false,ScrollView不处理这次事件, * 让子控件中的TouchEvent去处理,所以横向滑动的事件交由子控件处理, ScrollView只处理纵向滑动事件 */ if (xDistance > yDistance) { return false; } } return super.onInterceptTouchEvent(ev); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Android解决viewpager嵌套滑动冲突并保留侧滑菜单功能,包括了Android解决viewpager嵌套滑动冲突并保留侧滑菜单功能的使用技巧和注意事项,需要的朋友参考一下 重写子pagerview的dispatchTouchEvent方法,在返回前添加一句getParent().requestDisallowInterceptTouchEvent(true)中断掉事件的传递
本文向大家介绍解决ViewPager和SlidingPaneLayout的滑动事件冲突问题,包括了解决ViewPager和SlidingPaneLayout的滑动事件冲突问题的使用技巧和注意事项,需要的朋友参考一下 问题描述: ViewPager和SlidingPaneLayout的滑动事件冲突。 问题分析: 在手指左右滑动时,SlidingPaneLayout会屏蔽ViewPager的滑动事件。
有人在处理ViewPager2片段GoogleMap吗? 我遇到了一个非常有趣的问题,在我的viewpager中有两个选项卡,每个选项卡都呈现片段。 其中一个片段产生了谷歌地图。 当我尝试在地图上移动时,我得到了viewpager2尝试左右滑动的效果,这真的很烦人,所以我所做的解决方法并不太好。 我通过构造函数将视图寻呼机暴露给其中一个片段,并向顶部视图寻呼机活动发出回调。 在那里,我用逻辑执行了
在纵向滚动的UITableView的每一个section里面嵌套横向滚动的UITableView。其中横向滑动的UITableView,是重新建了一个类来重写UITableView,将其旋转90°。适用环境:Xcode 4.5, iOS 5.0 以上。 [Code4App.com]
本文向大家介绍jquery UI Datepicker时间控件冲突问题解决,包括了jquery UI Datepicker时间控件冲突问题解决的使用技巧和注意事项,需要的朋友参考一下 公司里的项目由于发展较快,很多东西都没有好好梳理一下,以至于有很多的潜在的问题。 最近就遇到了一个比较坑的问题。datepicker 有两个插件库中的datepicker插件比较有名。一个是jQuery-UI,一个
本文向大家介绍Android侧滑菜单和轮播图之滑动冲突问题,包括了Android侧滑菜单和轮播图之滑动冲突问题的使用技巧和注意事项,需要的朋友参考一下 接手一个项目,有一个问题需要修改:轮播图不能手动滑动,手动滑动轮播图只会触发侧滑菜单。 猜测:viewpager控件(轮播图)的触摸事件被SlidingMenu控件(侧滑菜单,非第三方项目,乃是上个开发人员自定义的)拦截了。 基于这个猜测,我自定义