Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 2

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

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

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

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

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

Ответ 3

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

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); 

Ответ 4

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

Ответ 5

Как говорили другие, и Чейни сказал в своем ответе - вероятно, лучше оставить его так, как предполагалось. Однако 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 для обработки, когда он сдвигается/открывается/закрывается.

Я предлагаю также прочитать серию Adam Powell в навигационном ящике - часть 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