如何在导航视图中定位菜单项?

How to position menu items in Navigation View?

我的问题与 Design Support Library 最近发布的 Navigation View 有关。

我想将 Log In 放在 Navigation View 的底部,我该怎么做? 我的菜单 XML 现在看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/navigation_sub_item_1"
            android:icon="@drawable/ic_action_event"
            android:title="@string/home" />
        <item
            android:id="@+id/navigation_sub_item_2"
            android:icon="@drawable/ic_action_person"
            android:title="@string/profile" />
        <item
            android:id="@+id/navigation_sub_item_3"
            android:icon="@drawable/ic_action_labels"
            android:title="@string/tags" />
        <item
            android:id="@+id/navigation_sub_item_4"
            android:icon="@drawable/ic_action_settings"
            android:title="@string/log_in" />
    </group>

</menu>

这是我的布局:

     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:background="@color/white_1000">

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar" />

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

            <FrameLayout
                android:id="@+id/content_frame"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />

            <android.support.design.widget.NavigationView
                android:id="@+id/main_drawer"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                app:headerLayout="@layout/drawer_header"
                app:menu="@menu/drawer_menu" />

    </android.support.v4.widget.DrawerLayout>

</RelativeLayout>

我认为导航菜单就像一个列表视图。所以项目将被放置在列表中。

如果你想让一个项目放在底部,你可以在布局中的NavigationView标签内自定义xml

您希望 "Log In" 项目固定在导航视图的底部吗?

您可以通过在 NavigationView 中嵌套额外的 views/layouts 来做到这一点。 NavigationView 扩展 FrameLayout,因此您可以将其包裹在子视图周围。

我 post 阅读了有关 NavigationView 页脚的更多信息 here。另请参阅 post 中的其他答案以获取更多布局选项。

编辑

仅供参考:如果您使用 "fixed footer" 方法,您基本上是从菜单中删除页脚项目(例如 "Log In" 在您的示例中)。这意味着您必须自己实现点击和其他处理程序。