【问题标题】:Catch onTouch event by Custom 2d Scrollview parent, handle it and pass to children通过自定义 2d Scrollview 父级捕获 onTouch 事件,处理它并传递给子级
【发布时间】:2014-10-14 06:45:06
【问题描述】:

我正在尝试实现 Catch onTouch event by parent, handle it and pass to children 但未能做到这一点。

完整二维滚动码的要点是here

我尝试过的:

重写 dispatchTouchEvent 方法,并将 MotionEvent 发送到 GestureDetector

     @Override
     public boolean dispatchTouchEvent (MotionEvent ev) {

    // return super.dispatchTouchEvent(ev);

     boolean result = super.dispatchTouchEvent(ev);
     if (gestureDetector.onTouchEvent(ev)) {
            return result;
       } 
       //If not scrolling vertically (more y than x), don't hijack the event.
        else {
            return false;
       }

}

活动:

   setContentView(R.layout.activity_fullscreen);

    final View contentView = findViewById(R.id.fullscreen_content);

    android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
    ctx = this;

   ShapeDrawableView     animView = new ShapeDrawableView(this, fm, ctx);//customview



    ((ViewGroup) contentView).addView(animView);

布局:

<view
   class="com.example.astream.TwoDScrollView" 
   android:id="@+id/fullscreen_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     android:gravity="center" />

【问题讨论】:

    标签: android android-layout android-view touch-event android-scrollview


    【解决方案1】:

    目前无法详细检查,但这是一个突出的问题:

    //If not scrolling vertically (more y than x), don't hijack the event.
    else {
        return false;
    }
    

    这里返回 false 不一定是真的;您的一个子视图可能实际上已经处理了该事件并需要让某人知道...我认为您需要做更多这样的事情:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多