我在我的应用程序中使用新的导航抽屉.这很棒,除了我没有找到一个简单的方法来设置抽屉的打开方式.默认行为是从屏幕左边缘拖动到打开.这很好,除非手机/桌子上有一个外壳并且手机的边缘无法触及.我想允许用户从屏幕的边缘触摸并向左拖动.这很容易使用其他导航抽屉库(滑动库)设置.不幸的是,我还没有看到谷歌的lib.
可以使用NavigationLayout的onTouchEvent()方法.当然,您可以收听所有触摸事件并触发openDrawer,但希望以更少的代码轻松实现.有任何想法吗?
我有一个应用程序可以覆盖 的onTouchEvent(MotionEvent ev)来MainActivity确定Two-Finger-Swipe和Pich-Open/ Pinch-Close。一切正常,直到我将其添加到应用程序中(就像创建导航抽屉DrawerLayout中所述)。问题:阻止在 MainActivity 中调用。DrawerLayoutonTouchEvent()
我开始编写CustomDrawerLayout, 并尝试重写DrawerLayout方法onInterceptTouch()和onTouchEvent()。
TouchEvent(我发现)将其传输到 MainActivity 的唯一方法:
// onTouchEvent of CustomDrawerLayout
@Override
public boolean onTouchEvent(MotionEvent ev){
// super.onTouchEvent(ev); // prevent transmission of TouchEvent
return false;
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是抽屉无法正确打开。抽屉卡住了,如这篇文章中所述: DrawerLayout getting 卡在 swipe 上。
是否可以将 传输TouchEvent到 MainActivity 来处理 MultiTouchDetection?或者我必须处理这个问题CustomDrawerLayout?
更新1
首先,我不得不说,如果我从左边缘滑动,抽屉只会卡住。通过单击ActionBar抽屉中的抽屉图标,效果很好。TouchEvent使用以下代码传输作品。但前提是抽屉打开了!否则Activity.onTouchEvent不叫!
// onTouchEvent of …Run Code Online (Sandbox Code Playgroud) 通常,当按下内容区域时DrawerLayout,抽屉将关闭并且触摸被消耗.有没有办法防止这种情况并将触摸事件传递到内容区域?
谢谢!