【发布时间】:2016-08-11 18:03:23
【问题描述】:
背景
google 引入了 DrawerLayout,当您点击操作栏的“向上”按钮时,它会在屏幕左侧区域显示一个菜单。
由于 actionBarSherlock 尚不支持该库,因此已经有一种方法可以使用 this project 来克服它。
它已经在许多应用上提供了变体:currents、gmail、hangouts、youtube...
问题
在“currents”应用(和 youtube)上,当用户从左向右滑动(最左侧)页面时,会出现 DrawerLayout,无论手指从何处开始触摸 .
我怎样才能达到同样的效果?也许我应该使用onInterceptTouchEvent?
除了this link(也可以和this one)之外,没有太多关于可以做什么很酷的事情的文档和教程。他们说(在“让用户快速浏览”部分)左侧大约 20dp 用于此功能,但我可以看到“电流”适用于更大的区域。
这个库似乎还没有完全完成,所以布局 xml 文件甚至无法在可视化 UI 编辑器中显示...
编辑:该库似乎是开源的。代码可在:
.../android-sdk\sources\android-18\android\support\v4\widget\DrawerLayout.java
.../android-sdk\sources\android-18\android\support\v4\widget\SlidingPaneLayout.java
.../android-sdk\sources\android-18\android\support\v4\app\ActionBarDrawerToggle.java
现在的问题是如何让它像我写的那样工作,这样它就可以像在 youtube 上一样工作,允许我们自定义它的外观以及从哪里允许滚动它。
【问题讨论】:
-
我不确定我是否理解正确,我也在使用新的导航抽屉,并且它始终可以在没有任何额外设置的情况下工作。我正在做一个项目:ABS + Navigation Drawer + Fragments + GMaps,从整个屏幕的最左侧或最右侧滑动右侧或左侧抽屉没有问题。您是否将 xml 中的抽屉声明为 recommended?
-
我正在使用我发布的内容。你是说我不需要看这个项目,只需使用谷歌的东西吗?它与 ABS 一起工作是否正常,是否允许我自定义触发导航抽屉滚动的距离(例如从屏幕中间)?如果是这样,如何?他们的示例应用程序只允许在您开始触摸屏幕最左侧时滚动...
-
好吧,我绝对确定 ABS + 新的导航抽屉集成没有任何问题,没有任何额外的帮助,如您发布的项目。至于滑动抽屉出现时被识别的屏幕区域非常薄,我不确定是否可以修改,例如滑动库可以(无,边缘,整个屏幕)。您提供的示例(youtube)无效,它不使用导航抽屉,我会说他们使用滑动菜单库。 Google+ 确实使用了新的导航抽屉,如果您尝试,要滑动的屏幕区域与左边框相同。
-
youtube 确实有一个导航抽屉。也许它看起来不一样,但它有效。也许你应该更新应用程序。或者,您可以通过 google 试用“currents”。无论如何,我的问题是如何使其可定制,以便我可以控制触发抽屉导航滚动的位置?
-
好的,我找到了答案。不幸的是,这是不可能的。距离边缘仅 20dp:
Give the user a quick peek If the user touches the very left edge of the screen (within 20 dp from the left), have the drawer peek out as soon as the finger makes contact with the display. This promotes accidental discovery and provides richer feedback.看here。在这种情况下,您需要有另一种方法来确定您想要的区域中的触摸并使用mDrawerLayout.openDrawer(mDrawer)触发抽屉
标签: android slidingmenu drawerlayout