什么情况可以触发horizo​​ntalScrollView的onScrollChanged事件?

时间:2015-04-27 17:52:09

标签: android horizontalscrollview

我的Horizo​​ntalScrollView有问题。我已经覆盖onScrollChanged而只是观看 x 滚动位置值。当我触摸屏幕并移动手指时,onScrollChanged中的值是正确的。当我释放手指时,每个值在我的logcat中出现两次。在我的手指离开屏幕后,似乎位置值触发了事件两次。

首先,我创建了一个从Horizo​​ntalScrollView扩展并覆盖onScrollChanged的类

public class MyHorizontalScrollView extends HorizontalScrollView {

    @Override
    protected void onScrollChanged(int x, int y, int oldx, int oldy) {
        Log.i("12345", String.valueOf(x) + " " + String.valueOf(oldx));
    }
}

要点: 当我触摸屏幕并移动时,每个值都会出现一次。 手指离开屏幕后,每个值都会显示两次。 请帮我解决这个问题。我想知道第二个电话的来源。

1 个答案:

答案 0 :(得分:0)

这背后的原因是当触发 MotionEvent.ACTION_UP 运动事件时,再次调用 onScrollChanged 。将这些方法添加到滚动视图以禁止该事件,这将解决您的问题。

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    return true;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    return event.getAction() == MotionEvent.ACTION_UP || super.onTouchEvent(event);
}