我正在使用一个 ViewPager,里面有一个 TouchImageView,它工作得很好,(我在我的许多 Android 应用程序中都使用了这个解决方案)。但是,我有一个应用程序,在同一屏幕上有许多其他控件,因此它们都在滚动视图控件中。在这种情况下,我看到滚动视图效果不佳,并且无法在缩放的图像中平移。当我用手指向上或向下平移时,整个页面滚动而不是图像平移。
所以这就是我想要做的......在 TouchImageView 中,我检测到 Zoom Begin 和 Zoom End 并创建了一个接口来回调我的 Activity onZoomBegin() 和 onZoomEnd() 方法。在 onZoomBegin() 方法中,我想禁用滚动视图响应任何触摸事件,在 onZoomEnd() 中我可以重新启用它。到目前为止,这是我在 onZoomBegin() 方法中尝试做的事情,但没有一个工作......
scrollView.setEnabled(false);
scrollView.requestDisallowInterceptTouchEvent(true);
我也尝试过类似问题的答案,即像这样接管 onTouchListener:
scrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
这确实会阻止滚动视图滚动,但滚动视图仍在拦截触摸事件,导致图像仍然不会向上或向下平移。
我试过在布局设计器中检查nestedScrollingEnabled,不高兴......我只想知道有没有办法完全禁用滚动视图,然后重新启用它以响应触摸事件?