Android ScrollView嵌套横向滑动控件时冲突问题
前言:今天在开发的时候遇到这样的问题,最外层是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中SQLiteDatabase使用方法
这篇文章主要以一个简单的实例为大家详细讲解Android中SQLiteDatabase使用方法,感兴趣的小伙伴们可以参考一下2016-05-05Android开发仿QQ空间根据位置弹出PopupWindow显示更多操作效果
我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,比普通的PopupWindow弹在屏幕中间显示好看的多,今天就给大家分享下实现代码,需要的朋友参考下吧2016-12-12Android波纹扩散效果之仿支付宝咻一咻功能实现波纹扩散特效
这篇文章主要介绍了Android波纹扩散效果之仿支付宝咻一咻功能实现波纹扩散特效的相关资料,需要的朋友可以参考下2016-02-02android studio 一直卡在Gradle:Build Running的几种解决办法
这篇文章主要介绍了android studio 一直卡在Gradle:Build Running的解决办法,非常具有实用价值,需要的朋友可以参考下2017-10-10Android开发基础之创建启动界面Splash Screen的方法
这篇文章主要介绍了Android开发基础之创建启动界面Splash Screen的方法,以实例形式较为详细的分析了Android定制启动界面的布局及功能实现相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下2015-10-10
最新评论