Коснитесь в любом месте, чтобы открыть меню открытия навигационного ящика

Для раздвижного меню jfeinstein10 ( https://github.com/jfeinstein10/SlidingMenu ) я могу перемещаться в любом месте приложения, чтобы открыть меню.

Для недавно введенного навигационного ящика Google http://developer.android.com/design/patterns/navigation-drawer.html#side-nav , есть ли способ, которым я могу иметь подобное поведение?

До сих пор, из документации, я видел, что это только ограничивает скольжение от края или касание значка приложения.

Пользователь может вывести навигационный ящик на экран, прокручивая его с левого края экрана или нажав значок приложения на панели действий.

Solutions Collecting From Web of "Коснитесь в любом месте, чтобы открыть меню открытия навигационного ящика"

Я нашел решение. Вы можете настроить диапазон касания и сделать его таким же широким, как и ваш вид. Ссылка здесь

Установите поле перетаскивания для Android Navigation Drawer

Google, так, как они говорят о своем учебнике «Если пользователь касается самого левого края экрана (в пределах 20 д.ф. слева)», похоже, что они не хотят использовать эту функциональность.

См. http://developer.android.com/design/patterns/navigation-drawer.html.

«Пользователь может вывести навигационный ящик на экран, прокручивая его с левого края экрана или нажав значок приложения на панели действий».

Они не говорят и не прокручивают нигде на экране. Они также не имеют такой функциональности ни в одном из своих приложений (G +, Gmail и т. Д.), Поэтому, если вы хотите использовать эту функциональность, вы, вероятно, должны придерживаться своего собственного (с жестами) или третьего лица (например, jfeinstein10).

EDIT: приложение Youtube позволяет прокручивать куда угодно, но версия, по крайней мере, (4.5.17), не похожа на то, что она использует их новую api.

Вы можете использовать это

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); Field mDragger = mDrawerLayout.getClass().getDeclaredField( "mLeftDragger");//mRightDragger or mLeftDragger based on Drawer Gravity mDragger.setAccessible(true); ViewDragHelper draggerObj = (ViewDragHelper) mDragger .get(mDrawerLayout); Field mEdgeSize = draggerObj.getClass().getDeclaredField( "mEdgeSize"); mEdgeSize.setAccessible(true); int edge = mEdgeSize.getInt(draggerObj); mEdgeSize.setInt(draggerObj, edge * 3); 

Вы можете использовать GestureDetector чтобы GestureDetector обнаруживать GestureDetector жесты и просто открывать ящик навигации самостоятельно с помощью DrawerLayout.openDrawer() .

Как говорили другие, и Чейни сказал в своем ответе – вероятно, лучше оставить его так, как предполагалось. Однако DrawerLayout отличается от стиля SlidingMenu . Google также добавил SlidingPaneLayout который более точно соответствует стилю SlidingMenu.

Я закончил реализацию SlidingPaneLayout таким образом, поскольку это было больше того, что я искал в конце концов. (Это также стиль приложения YouTube / Hangouts)

 <android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/sliding_pane_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/left_pane" android:layout_width="match_parent" android:layout_height="match_parent"/> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"/> </android.support.v4.widget.SlidingPaneLayout> 

Затем, чтобы открыть с кнопкой панели действий:

 getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action buttons switch(item.getItemId()) { case android.R.id.home: if (mPaneLayout.isOpen()) mPaneLayout.closePane(); else mPaneLayout.openPane(); return true; default: return super.onOptionsItemSelected(item); } } 

Затем вы можете реализовать PanelSlideListener для обработки, когда он сдвигается / открывается / закрывается.

Я предлагаю также прочитать серию Адама Пауэлла в ящике навигации – часть 3 использует использование SlidingPaneLayout vs Navigation Drawer:

Часть 1 – https://plus.google.com/+AdamWPowell/posts/2zi4DXd3jkm

Часть 2 – https://plus.google.com/+AdamWPowell/posts/VdgexsZeXHW

Часть 3 – https://plus.google.com/+AdamWPowell/posts/8j2GVw72i1E

Часть 4 – https://plus.google.com/+AdamWPowell/posts/TtBFUXhe5HU