You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将菜单放置在NavigationView的底部?

嘿,这个需求我太熟啦!想通过app:menu="@menu/activity_main_drawer"的方式让NavigationView的菜单固定在底部,其实不用自己手动写布局,靠XML配置就能搞定,给你两个实用的方法:

实现NavigationView菜单居底的具体方案

方法一:菜单分组+布局权重(推荐)

这是最省心的方式,纯菜单XML就能实现:

  1. 打开你的菜单文件(比如activity_main_drawer.xml),把要放在底部的所有菜单项塞进一个<group>标签里,给这个group加上android:layout_gravity="bottom"和android:weight="1"属性——权重会让顶部的菜单项占满上方剩余空间,底部group自然就贴到底部了。
    示例代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 顶部的常规菜单项 -->
    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_home"
        android:title="首页"/>
    <item
        android:id="@+id/nav_profile"
        android:icon="@drawable/ic_profile"
        android:title="个人中心"/>

    <!-- 底部菜单分组 -->
    <group 
        android:layout_gravity="bottom" 
        android:weight="1">
        <item
            android:id="@+id/nav_settings"
            android:icon="@drawable/ic_settings"
            android:title="设置"/>
        <item
            android:id="@+id/nav_logout"
            android:icon="@drawable/ic_logout"
            android:title="退出登录"/>
    </group>
</menu>
  1. 别忘了确保布局里的NavigationView高度是match_parent,这样权重才能正常生效:
<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:menu="@menu/activity_main_drawer"/>

方法二:借助HeaderView调整(适合带Header的场景)

如果你的NavigationView有顶部Header,可以给Header布局设置android:layout_weight="1",让Header占满NavigationView的大部分空间,菜单就会被自动推到底部。不过这个方法更适合Header需要占据较多垂直空间的场景哦。

小提醒:如果菜单里有分隔线,记得把分隔线也放在底部的group里,不然可能会出现在中间位置,影响视觉效果~

内容的提问来源于stack exchange,提问作者Alexander Polyakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:26:48