Android-ScrollView上下滑动捕捉导致内部水平滑动的控件不灵敏(解决方案)
来源:互联网 发布:北京存量房交易数据 编辑:程序博客网 时间:2024/05/16 07:47
遇到这个问题,我们首先分析一下,当我们手指水平滑动时(并不一定是真正的水平,有可能在竖直方向也有位置变化),首先是最外部的ScrollView捕捉到滑动Event,如果其中包含了竖直滑动,那么它就不再抛出该信息,导致整个ScrollView的竖直滑动,而原本我们想要水平滑动的内部控件没有滑动。
为了解决这个问题,我们可以对滑动这个动作加以判断:如果滑动的水平距离大于竖直距离,那么认为它是水平滑动,否则认为它是竖直滑动。而这个判断该如何实现,在哪里实现?我们想,既然是ScrollView的错,那么我们可以自定义一个ScrollView来实现该解决方法。
代码如下,我们自定义MyScrollView:
public class MyScrollView extends ScrollView {
private float xDistance , yDistance , xLast , yLast;
public MyScrollView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
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;
if(xDistance > yDistance){
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
重写onInterceptTouchEvent(MotionEvent ev)方法。为什么不是重写onTouchEvent呢,同学可以搜索一下。
- Android-ScrollView上下滑动捕捉导致内部水平滑动的控件不灵敏(解决方案)
- Android-ScrollView上下滑动捕捉导致内部水平滑动的控件不灵敏(解决方案)
- Android-ScrollView上下滑动捕捉导致内部水平滑动的控件不灵敏(解决方案)
- scrollview中包含viewpager导致viewpager左右滑动手势不灵敏的解决方案
- Android之解决scrollview总是优先滑动,导致在scrollview内的控件不滑动问题
- Android之解决scrollview总是优先滑动,导致在scrollview内的控件不滑动问题
- ScrollView和ViewPager嵌套使用(导致左右、上下滑动冲突解决方案)
- android 水平滑动的控件
- 解决在scrollview上下滑动嵌套scrollview,viewpager水平滑动时的抖动问题
- 解决在scrollview上下滑动嵌套scrollview,viewpager水平滑动时的抖动问题
- 解决ViewFlow在Scrollview下滑动不灵敏的BUG(解决viewflow与父控件的滑动事件冲突问题)
- 【Android自定义控件】不用ScrollView实现上下两屏滑动
- 监听ScrollView 的上下滑动
- 使用ionic框架的<ion-scroll>进行水平滚动时,导致页面难以上下滑动的解决方案
- scrollview 与自定义控件的上下滑动冲突
- android scrollView 内嵌ViewPager或Gallery等水平滑动控件冲突问题解决实现同时滑动
- ScrollView ViewPager嵌套导致滑动冲突解决方案
- ScrollView ViewPager嵌套导致滑动冲突解决方案
- 李明杰老师关于计算整个文件夹的代码行数练习
- linux命令(13)——less命令
- Groovy Tip 5:数组
- Android动画之3D翻转动画
- string之间的拼接比较
- Android-ScrollView上下滑动捕捉导致内部水平滑动的控件不灵敏(解决方案)
- Android Touch事件处理
- Android_解决系统改变字体大小的时候导致的界面布局混乱的问题
- javascript时间字符串增加一天
- Core Data
- c、c++ char*和wchar*互相转换
- Maven参数含义
- JAVA中MAVEN的使用
- 强大的PHP生成缩略图函数。