Jes*_*run 67

NavigationDrawer可以配置为从左,右或两者拉出.关键是XML声明中抽屉的外观顺序和layout_gravity属性.这是一个例子:

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false" >
    </FrameLayout>

    <!-- Left drawer -->

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:choiceMode="singleChoice" />

    <!-- Right drawer -->

    <ListView
        android:id="@+id/right_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:choiceMode="singleChoice" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)


Lar*_*zie 46

这是抽屉上的文档,您可以将其配置为从左侧或右侧拉出.

使用子视图上的android:layout_gravity属性控制抽屉定位和布局,该属性对应于您希望抽屉出现的视图的哪一侧:左侧或右侧.(或者在支持布局方向的平台版本上开始/结束.)

http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html


ama*_*Bit 24

我的应用程序崩溃了"没有抽屉视图发现重力左"错误.

所以将其添加到onOptionsItemSelected:

if (item != null && item.getItemId() == android.R.id.home) {
        if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
            mDrawerLayout.closeDrawer(Gravity.RIGHT);
        } else {
            mDrawerLayout.openDrawer(Gravity.RIGHT);
        }
    }
Run Code Online (Sandbox Code Playgroud)


san*_*one 5

添加到/sf/answers/1524719731/解决方案.

如果您正在使用Android Studio创建的导航抽屉项目,那么事情就会发生变化onOptionsItemSelected.由于他们创建了子类,因此必须使用此代码

if (item != null && id == android.R.id.home) {
        if (mNavigationDrawerFragment.isDrawerOpen(Gravity.RIGHT)) {
            mNavigationDrawerFragment.closeDrawer(Gravity.RIGHT);
        } else {
            mNavigationDrawerFragment.openDrawer(Gravity.RIGHT);
        }
        return true;
}
Run Code Online (Sandbox Code Playgroud)

下一个.在课堂上NavigationDrawerFragment,你必须创建3个方法:

方法1

public boolean isDrawerOpen(int gravity) {
    return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(gravity);
}
Run Code Online (Sandbox Code Playgroud)

方法2

public void closeDrawer(int gravity) {
    mDrawerLayout.closeDrawer(gravity);
}
Run Code Online (Sandbox Code Playgroud)

方法3

public void openDrawer(int gravity) {
    mDrawerLayout.openDrawer(gravity);
}
Run Code Online (Sandbox Code Playgroud)

只有现在,右侧抽屉才会起作用.