我的应用会覆盖onTouchEvent(MotionEvent ev)
的{{1}}以确定MainActivity
和Two-Finger-Swipe
/ Pich-Open
。
一切正常,直到我将Pinch-Close
添加到应用程序(如Creating a Navigation Drawer中所述)。问题:DrawerLayout
阻止了在MainActivity中调用DrawerLayout
。
我开始撰写onTouchEvent()
,并尝试覆盖CustomDrawerLayout
方法DrawerLayout
和onInterceptTouch()
。
将onTouchEvent()
传输到MainActivity的唯一方法(我发现):
TouchEvent
这里的问题是抽屉没有正确打开。抽屉卡住了这篇文章中描述的内容: DrawerLayout getting stuck on swipe。
是否可以将 // onTouchEvent of CustomDrawerLayout
@Override
public boolean onTouchEvent(MotionEvent ev){
// super.onTouchEvent(ev); // prevent transmission of TouchEvent
return false;
}
传输到MainActivity来处理MultiTouchDetection?或者我必须在TouchEvent
处理此问题?
更新1
首先我不得不说,如果我从左边缘滑动,抽屉只会卡住。点击CustomDrawerLayout
中的DrawerIcon,抽屉工作正常。
ActionBar
的传输使用以下代码。但只有抽屉被打开!否则TouchEvent
不会被调用!
Activity.onTouchEvent
通过从边缘滑动打开抽屉( - >抽屉卡住),我得到一个非常奇怪的行为:
// onTouchEvent of CustomDrawerLayout
@Override
public boolean onTouchEvent(MotionEvent ev){
// super.onTouchEvent(ev); // still prevents transmission of TouchEvent
activity.onTouchEvent(ev);
return true;
}
)CustomDrawerLayout.onTouchEvent
仍称为CustomDrawerLayout.onTouchEvent
?我怎样才能防止被卡住的抽屉?
更新2
现在我覆盖Activity.onTouchEvent()
:
CustomDrawerLayout.onInterceptTouch()
这导致无法通过从边缘轻扫来打开抽屉 - >只有DrawersIcon才能打开和关闭抽屉。但现在@Override
public boolean onInterceptTouchEvent(MotionEvent ev){
return true;
}
始终传输到活动( - >按预期工作)。
但我真正想要的是通过从边缘和滑动来打开抽屉的可能性,以获得我的MultiGestureDetector。这可能吗?
答案 0 :(得分:3)
稍微更新了一段时间,但在这个问题出现几天之后,最适合我的解决方案是创建一个CustomDrawerLayout。然后,将构造函数中的Context作为Activity转换,从onInterceptTouchEvent调用Activity onTouchEvent。
@Override public boolean onInterceptTouchEvent( MotionEvent ev )
{
getActivity().onTouchEvent( ev );
return super.onInterceptTouchEvent( ev );
}
我发现代码是一个蹩脚的黑客......但对我有用。祝你好运!
答案 1 :(得分:0)
我在导航抽屉本身识别项目的手势时遇到了一些问题,并遇到requestDisallowInterceptTouchEvent。我发现我得到的是MotionEvent.ACTION_DOWN,但之后没有任何内容,因为NavigationDrawer正在拦截触摸。关键是在活动中的触摸处理程序中对down事件调用requestDisallowInterceptTouchEvent(true),以便您可以在不被截获的情况下处理触摸。
在尝试找出Android中的触控系统时,This presentation也非常有用
。答案 2 :(得分:0)
如果您或其他人仍然需要它,这是我的实施 除了没有从Android代码中获取的“边缘”但作为常量(我设置)之外,完美地工作。
请查看此链接:
Android Navigation Drawer Doesn't Pass onTouchEvent to Activity