6

我有一个扩展 Android ScrollView 的自定义视图。直接子元素是一个相对布局,它具有可点击的子元素。我希望能够:

  1. 在滚动视图上检测 onScale Gesture(然后我将手动管理项目的比例)。
  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 等等。

我成功拦截了比例或点击和滚动,但不是两者兼而有之。

谢谢,丹尼尔

4

1 回答 1

9

解决方案是使用:

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

而不是覆盖 onInterceptTouchEventonTouchEvent方法。

于 2013-01-01T09:46:01.797 回答