如何在 NavigationView 底部绘制菜单?

Posted

技术标签:

【中文标题】如何在 NavigationView 底部绘制菜单?【英文标题】:How to draw menu at the bottom of NavigationView? 【发布时间】:2018-11-01 09:05:52 【问题描述】:

是否可以让菜单出现在NavigationView 的底部,而不是顶部。

我想我可以在NavigationView 中放置任何布局,并绘制一些按钮。但如果可能的话,我想使用app:menu="@menu/activity_main_drawer"

【问题讨论】:

您可以在这里查看方法:developer.android.com/reference/android/support/design/widget/… @Ricardo,谢谢,但我需要的正是带有侧 NavigationView 的 DrawerLayout,而不是 BottomNavigationView。 【参考方案1】:

您可以通过创建BottomSheetDialog 来实现它,它的行为类似于普通的 Android 对话框,但它会出现在底部。要使BottomSheetDialog 工作,最重要的部分是将app:layout_behavior="android.support.design.widget.BottomSheetBehavior" 添加到您的root view。所以基本上创建你想要的布局,将该行添加到root view,然后在代码中创建BottomSheetDialog

       //This is Java code but you can easily convert it to C#
       BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this);
       View view = getLayoutInflater().inflate(R.layout.yourLayoutHere, null);
       bottomSheetDialog.setContentView(view);
       bottomSheetDialog.show();

【讨论】:

谢谢,但我需要的正是带有侧边 NavigationView 的 DrawerLayout,而不是 BottomSheetDialog。【参考方案2】:

您可以使用以下代码创建自定义导航抽屉。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_
    android:layout_
    tools:openDrawer="end">

    <include layout="@layout/content_home" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_
        android:layout_
        android:layout_gravity="start">

        <include layout="@layout/layout_navigation" />

    </android.support.design.widget.NavigationView>

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

&lt;include layout="@layout/layout_navigation" /&gt; 是自定义布局 对于一个菜单,您可以在其中创建自定义布局并添加所需的文本视图。 然后您可以将重力底部赋予这些文本视图的父级。

如果这没有帮助,请告诉我。

【讨论】:

谢谢。但看起来是这样的,我的意思是“我想我可以将任何 Layout 放在 NavigationView 中,并绘制一些按钮。”或者,也许我没听懂你的意思,你能告诉我如何使用android menu吗? 你必须使用上面提供的方法。否则你不能放下你的菜单。在导航中创建自定义布局很容易。如果您有任何问题,请 DM 我。否则这里是小技巧。在 menu.xml 文件中的菜单之前创建空菜单,并且不提供任何文本或图标。这只是一个黑客。并且会导致不同设备中菜单位置的改变。

以上是关于如何在 NavigationView 底部绘制菜单?的主要内容,如果未能解决你的问题,请参考以下文章

如何将页脚添加到 NavigationView - Android 支持设计库?

如何将 BottomNavigationView 与 NavigationView 一起对齐到 Activity 的底部?

如何在 NavigationView 中获取菜单项?

如何使用菜单布局将自定义项添加到 NavigationView?

Android-Jetpack-Navigation-BottomNavigationView-实现底部导航栏

如何修复“错误膨胀类 android.support.design.widget.NavigationView”