Skip to content

Commit 2e67aed

Browse files
committed
解决为pager添加监听后,长按无法停止scroll的问题
只是将代码从onTouchEvent移到了dispatchTouchEvent当中,这样就可以先处理逻辑,而不是由子View去决定是否消费掉该事件,消费掉就无法执行到ViewPager的onTouchEvent了。
1 parent 6765120 commit 2e67aed

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,12 @@ public void scrollOnce() {
168168
* <li>if event is up, start auto scroll again.</li>
169169
* </ul>
170170
*/
171-
@Override
172-
public boolean onTouchEvent(MotionEvent ev) {
171+
@Override
172+
public boolean dispatchTouchEvent(MotionEvent ev) {
173+
int action = MotionEventCompat.getActionMasked(ev);
174+
173175
if (stopScrollWhenTouch) {
174-
if (ev.getAction() == MotionEvent.ACTION_DOWN && isAutoScroll) {
176+
if ((action == MotionEvent.ACTION_DOWN ) && isAutoScroll) {
175177
isStopByTouch = true;
176178
stopAutoScroll();
177179
} else if (ev.getAction() == MotionEvent.ACTION_UP && isStopByTouch) {
@@ -202,11 +204,12 @@ public boolean onTouchEvent(MotionEvent ev) {
202204
}
203205
getParent().requestDisallowInterceptTouchEvent(true);
204206
}
205-
return super.onTouchEvent(ev);
207+
return super.dispatchTouchEvent(ev);
206208
}
207209
}
208210
getParent().requestDisallowInterceptTouchEvent(true);
209-
return super.onTouchEvent(ev);
211+
212+
return super.dispatchTouchEvent(ev);
210213
}
211214

212215
private class MyHandler extends Handler {

0 commit comments

Comments
 (0)