android - 如何以不阻止滚动和点击它的子项目的方式在 Android ScrollView 中启用缩放?

标签 android scrollview multi-touch gesturedetector

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

  1. 检测 ScrollView 上的 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 等等。

我成功拦截了缩放或点击和滚动,但不是两者都拦截了。

谢谢, 丹尼尔

最佳答案

解决方案是使用:

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

并且不覆盖 onInterceptTouchEventonTouchEvent 方法。

关于android - 如何以不阻止滚动和点击它的子项目的方式在 Android ScrollView 中启用缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14092140/

相关文章:

Android:如何获取ListView是否处于滚动模式?

android - 两个手指或 pinc 缩放到 osmdroid 中的 map View

javascript - 尝试让两个同时操纵杆处理触摸事件

javascript - Internet Explorer 11 是否支持多点触控?

android - 初学者错误,不兼容的类型

安卓通知栏编号

android - OkHttp/Android 不返回完整结果

android - RFID在BluetoothSocket中获得串行连接

java - 在 MapBox View 上平移/缩放时如何阻止 ScrollView 滚动?

android - 如何复制 ScrollView 的所有内容?