我试图实施 Catch onTouch event by parent, handle it and pass to children 但未能做到这一点。
完整的2d滚动码的要点是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" />
答案 0 :(得分:2)
目前无法详细检查,但这是一个问题:
//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);
}