什么情况下可以触发horizontalScrollView的onScrollChanged事件?
What situation can trigger horizontalScrollView's onScrollChanged event?
我对 HorizontalScrollView 有疑问。我已经覆盖 onScrollChanged
只看 x 滚动位置值。当我触摸屏幕并移动手指时,onScrollChanged
中的值是正确的。当我松开手指时,每个值在 logcat 中出现两次。在我的手指离开屏幕后,似乎有一个位置值触发了两次事件。
首先,我创建了一个从 HorizontalScrollView 扩展的 class 并覆盖了 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));
}
}
总结:
当我触摸屏幕并移动时,每个值出现一次。
当我的手指离开屏幕后,每个值出现两次。
请帮我解决这个问题。我想知道第二个电话是哪里来的
这背后的原因是当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);
}
我对 HorizontalScrollView 有疑问。我已经覆盖 onScrollChanged
只看 x 滚动位置值。当我触摸屏幕并移动手指时,onScrollChanged
中的值是正确的。当我松开手指时,每个值在 logcat 中出现两次。在我的手指离开屏幕后,似乎有一个位置值触发了两次事件。
首先,我创建了一个从 HorizontalScrollView 扩展的 class 并覆盖了 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));
}
}
总结: 当我触摸屏幕并移动时,每个值出现一次。 当我的手指离开屏幕后,每个值出现两次。 请帮我解决这个问题。我想知道第二个电话是哪里来的
这背后的原因是当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);
}