如何在Android ScrollView中启用缩放,而不会阻止滚动和单击其子项?

6
我有一个自定义视图,扩展了Android ScrollView。直接子项是一个相对布局,其子项可点击。
我想要做到以下几点:
  1. 检测ScrollView上的onScale手势(然后我将手动管理项目的比例)。
  2. 垂直滚动ScrollView。
  3. 保持子项可点击。
到目前为止,我尝试了以下内容(伪代码):
public class CustomView extends ScrollView { 
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {  
        return super.onInterceptTouchEvent(ev) || mScaleDetector.onTouchEvent(ev);
    }

   @Override
   public boolean onTouchEvent(MotionEvent ev) {
       return mScaleDetector.onTouchEvent(ev);
   }

    private class ScaleListener extends
        ScaleGestureDetector.SimpleOnScaleGestureListener {

            @Override
            public boolean onScale(ScaleGestureDetector detector) {
                // Handle the scale..
                return true;
            }
       }
}

我也尝试了不同的onInterceptMethod配置,比如首先调用super然后返回mScaleDetector.onTouchEvent等等。

我成功地拦截了缩放或点击和滚动,但不能同时实现。

谢谢, 丹尼尔

1个回答

10
解决方案是使用以下方法:
     @Override
    public boolean dispatchTouchEvent(MotionEvent ev){
        super.dispatchTouchEvent(ev);    
        return mScaleDetector.onTouchEvent(ev); 
    }

不要重写 onInterceptTouchEventonTouchEvent 方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接