如何添加页脚到NavigationView – Android支持devise库?

如何将页脚设置和configuration文件项目设置为NavitationView ? 通过电子邮件导航抽屉看起来像收件箱。 NavitationView项目是通过菜单资源膨胀,但我不知道如何设置底部项目菜单资源,或者如何设置自定义视图到NavigationView或底部偏移量? 我已经尝试把这个<LinearLayout...>作为页脚视图,但在小屏幕页脚放置项目,我不能滚动菜单,我试图设置一个页脚填充到NavigationView ,但页脚也填充。

这不是在小屏幕上滚动:

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

不滚动

这个滚动,但在页面上方的菜单项:

 <android.support.design.widget.NavigationView android:id="@+id/drawer" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:paddingBottom="96dp" app:headerLayout="@layout/kuona_drawer_header" app:menu="@menu/drawer"> <LinearLayout...> </android.support.design.widget.NavigationView> 

在这里输入图像描述

抽屉菜单res/menu/drawer.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/action_current_list" android:checked="true" android:icon="@drawable/ic_current_list" android:title="@string/current_list" /> <item android:id="@+id/action_manage_lists" android:icon="@drawable/ic_my_lists" android:title="@string/my_lists" /> <item android:id="@+id/action_search_products" android:icon="@drawable/ic_search_black_24dp" android:title="@string/search_products" /> <item android:id="@+id/action_deals" android:icon="@drawable/ic_product_promo" android:title="@string/deals" /> </group> </menu> 

如果您需要在导航菜单中使用固定(非滚动)页脚,则需要将NavigationView环绕在另一个布局上,就像您发布的那样。 NavigationView的工作方式与FrameLayout相似,所以这最终将“叠加”NavigationView菜单项顶部的内部布局。 这里有一个方法来安排它,使用LinearLayout的页脚项目:

固定页脚

 <android.support.design.widget.NavigationView android:id="@+id/drawer" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:clickable="true" android:orientation="vertical"> <TextView android:id="@+id/footer_item_1" android:layout_width="match_parent" android:layout_height="48dp" android:gravity="center" android:text="Footer Item 1" /> <TextView android:id="@+id/footer_item_2" android:layout_width="match_parent" android:layout_height="48dp" android:gravity="center" android:text="Footer Item 2" /> </LinearLayout> </android.support.design.widget.NavigationView> 

在这个例子中我使用了TextViews,但是你可以使用任何你想要的页脚视图。 为避免页脚项目与菜单底部重叠,请在菜单资源文件的末尾添加一些虚拟项目(这些将用作“分隔符”):

RES /菜单/ drawer.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group> <item android:id="@+id/nav_item_1" android:icon="@drawable/ic_nav_item_1" android:title="Nav Item 1" /> <item android:id="@+id/nav_item_2" android:icon="@drawable/ic_nav_item_2" android:title="Nav Item 2" /> <item android:id="@+id/nav_item_3" android:icon="@drawable/ic_nav_item_3" android:title="Nav Item 3" /> <item android:id="@+id/nav_item_4" android:icon="@drawable/ic_nav_item_4" android:title="Nav Item 4" /> <item android:id="@+id/footer_spacer_1" android:checkable="false" android:enabled="false" android:orderInCategory="200" android:title="" /> <item android:id="@+id/footer_spacer_2" android:checkable="false" android:enabled="false" android:orderInCategory="200" android:title="" /> </group> </menu> 

最后,不要忘记在你的Activity中为实际页脚视图添加点击监听器:

 ... // Click listener for nav footer. View navFooter1 = findViewById(R.id.footer_item_1); navFooter1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Do footer action } }); View navFooter2 = findViewById(R.id.footer_item_2); navFooter2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Do footer action } }); ... 

滚动页脚

如果允许页脚与NavigationView的其余部分一起滚动,它会使事情变得更简单(不需要额外的布局或点击侦听器)。 只需将脚注项目添加到菜单资源文件中作为一个独特的<group> (这将创build一个分隔线 ),所有内容将自动处理并滚动到一起:

RES /菜单/ drawer.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="@+id/nav_menu"> <item android:id="@+id/nav_item_1" android:icon="@drawable/ic_nav_item_1" android:title="Nav Item 1" /> <item android:id="@+id/nav_item_2" android:icon="@drawable/ic_nav_item_2" android:title="Nav Item 2" /> <item android:id="@+id/nav_item_3" android:icon="@drawable/ic_nav_item_3" android:title="Nav Item 3" /> <item android:id="@+id/nav_item_4" android:icon="@drawable/ic_nav_item_4" android:title="Nav Item 4" /> </group> <group android:id="@+id/nav_footer"> <item android:id="@+id/nav_footer_1" android:icon="@drawable/ic_footer_item_1" android:title="Footer Item 1" /> <item android:id="@+id/nav_footer_2" android:icon="@drawable/ic_footer_item_2" android:title="Footer Item 2" /> </group> </menu> 

我只是给你提示如何解决它,但我没有机会在NavigationView上testing它,我很确定它会工作

这里的示例布局xml;

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:paddingBottom="96dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:background="#6F00" /> <TextView android:layout_width="match_parent" android:layout_height="96dp" android:layout_gravity="bottom" android:layout_marginBottom="-96dp" android:background="#600F" /> </FrameLayout> 

这里是结果:

在这里输入图像描述

诀窍是将填充应用于父项并减去子项的边距。


快速尝试:

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.NavigationView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:clipToPadding="false" android:paddingBottom="96dp" app:headerLayout="@layout/sample_header" app:menu="@menu/sample_menu"> <TextView android:layout_width="match_parent" android:layout_height="96dp" android:layout_gravity="bottom" android:layout_marginBottom="-96dp" android:background="#600F" android:gravity="center" android:text="I STAND BY MY SELF" /> </android.support.design.widget.NavigationView> 

在这里输入图像描述

你需要有一个容器导航视图布局,然后应该包含两个导航布局。 您将这些alignment到父布局的顶部和底部。

我build议使用导航视图作为父母,而不是一个FrameLayout,因为它本质上是一个ScrimFrameLayout和更好地与状态栏进行交互。

下面是你的活动应该是什么样子的例子:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/layout_dashboard" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".MainActivity"> <!-- Activity content goes here --> <android.support.design.widget.NavigationView android:id="@+id/navigation_drawer_container" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start"> <android.support.design.widget.NavigationView android:id="@+id/navigation_drawer" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="top" app:menu="@menu/menu_navigation_drawer" /> <android.support.design.widget.NavigationView android:id="@+id/navigation_drawer_bottom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" app:menu="@menu/menu_navigation_drawer_bottom" /> </android.support.design.widget.NavigationView> 

你可以阅读更多关于它,并在这里看到一个例子: http : //blog.nitish.io/post/122633295558/android-design-library-navigationview-with-top

最简单的答案是在抽屉布局中添加一个button,并在navigationview.xml中将其重力设置为底部。

这里是代码:

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.NavigationView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" android:layout_width="200dp" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/navigation_header" app:menu="@menu/menu_navigation"> <Button android:id="@+id/btn_sing_in" android:layout_width="match_parent" android:layout_height="50dp" android:text="@string/sign_in" android:layout_gravity="bottom"/> </android.support.design.widget.NavigationView> 

这是结果

遵循嵌套导航视图的其他答案中描述的方法,出现了一些问题:

  • 对于许多项目或横向模式,页脚与菜单项重叠
  • 如果真正的菜单有很多项目,嵌套的NavigationView滚动,这看起来不好
  • 在嵌套中有两个NavigationViews,不允许将自定义视图定义为页脚。
  • 处理嵌套滚动视图是一团糟(有时两个滚动条出现等)
  • 固定页脚应该始终在底部(很less和很多菜单项一样)

我解决所有这些问题的方法如下:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout ...> <include layout="@layout/main_content"/> <android.support.design.widget.NavigationView ...> <android.support.v4.widget.NestedScrollView ... android:fillViewport="true" android:scrollbars="vertical"> <LinearLayout ... android:orientation="vertical"> <android.support.design.widget.NavigationView ... app:elevation="0dp" app:headerLayout="@layout/nav_header" app:menu="@menu/nav_menu"> </android.support.design.widget.NavigationView> <LinearLayout android:id="@+id/spacer_to_bottom" ... android:layout_height="0dp" android:layout_weight="1"> </LinearLayout> <include layout="@layout/nav_footer"></include> </LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 

在这里,NestedScrollView充当子导航视图的滚动父项。 这意味着,子导航视图本身不会显示滚动条,但是整个内容以平坦的方式显示。

布局'spacer_to_bottom'填充所有剩余的空间,所以用less量菜单图标,页脚仍然在底部。

最后,将固定页脚添加到线性布局,该布局以真正的菜单(子导航视图),分隔符开始,并在底部具有页脚。

在这里你可以find完整的工作例子AndroidStudio-Project: https : //github.com/MarcDahlem/AndroidSidemenuFooterExample

特别是导航抽屉可以在这里find: https : //github.com/MarcDahlem/AndroidSidemenuFooterExample/blob/master/app/src/main/res/layout/activity_main.xml

截图:

几件物品 许多项目

遵循你的方法,一些小的改变可以帮助你想要达到的目标。

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:background="@color/background_material_light"> <TextView android:id="@+id/footer_item" android:layout_width="match_parent" android:layout_height="?attr/listPreferredItemHeight" android:background="?attr/selectableItemBackground" android:gravity="center_vertical" android:paddingLeft="?attr/listPreferredItemPaddingLeft" android:text="Something" android:textAppearance="?attr/textAppearanceListItem" /> </LinearLayout> 

并在菜单中设置一些存根项目,以便菜单项不重叠。

 <group> ... <item android:title="" android:orderInCategory="200"/> </group> 

你也想添加一个点击监听器到你的页脚项目。

它的一种令人失望的NavigationView没有规定添加页脚。 但是你可以尝试这样的事情,

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include layout="@layout/app_bar_base" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view_container" android:layout_width="wrap_content" android:layout_height="match_parent" android:fitsSystemWindows="false" android:layout_gravity="start" > <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scrollbarAlwaysDrawVerticalTrack="true" android:scrollbars="vertical" android:isScrollContainer="true" app:headerLayout="@layout/nav_header_base" app:menu="@menu/activity_base_drawer" android:layout_gravity="top" android:layout_marginBottom="x" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view_footer" android:layout_width="wrap_content" android:layout_height="x" app:headerLayout="@layout/hear_layout" app:menu="@menu/menu_items" android:scrollbars="none" android:layout_gravity="bottom" /> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 

如果你的页脚是一个列表,

  app:headerLayout="@null" app:menu="@menu/activity_base_drawer_footer" 

但是,如果是某种习俗的话,

  app:headerLayout="@layout/my_cutom_footer_view" app:menu="@null" 

此外,在这种情况下,您将需要设置x = height of your custom footer view

希望它有帮助。

NavigationView第一个孩子是包含标题和菜单项的ListView

只需要添加一个页脚是调用.addFooterView到ListView

更多信息: http : //www.andreabaccega.com/blog/2015/08/28/how-to-add-footer-to-navigationview/

复制粘贴代码:

 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ListView listView = (ListView) navigationView.getChildAt(0); View toRet = LayoutInflater.from(view.getContext()).inflate(R.layout.drawer_footer, listView, false); // Manipulate the view (if you need to) before calling addFooterView. listView.addFooterView(toRet, null, false); } 

我的解决scheme与固定页脚和滚动菜单(100%testing)

  <android.support.design.widget.NavigationView android:id="@+id/container_navigation" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="" android:nestedScrollingEnabled="true" android:scrollIndicators="none"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.NavigationView android:id="@+id/navigation" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_above="@+id/navigation2" android:layout_gravity="top" android:nestedScrollingEnabled="true" android:paddingBottom="@dimen/dimen_20_dp" app:headerLayout="@layout/nav_header" app:itemIconTint="@color/black_800" app:itemTextColor="@color/black_800" app:menu="@menu/navigation_drawer_items"> </android.support.design.widget.NavigationView> <android.support.design.widget.NavigationView android:id="@+id/navigation2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:background="@color/white_100" android:orientation="horizontal"> <TextView android:id="@+id/empty_spacer" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/ic_search" android:gravity="center" android:text="Share" /> <TextView android:id="@+id/mnuRate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/ic_search" android:gravity="center" android:text="Rate" /> <TextView android:id="@+id/mnuHelp" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/ic_search" android:gravity="center" android:text="Help" /> </LinearLayout> </android.support.design.widget.NavigationView> </RelativeLayout> </android.support.design.widget.NavigationView> 

只需在您的NavigationView中添加另一个布局:

 <android.support.design.widget.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:background="#000000" app:itemTextColor="#FFFFFF" app:headerLayout="@layout/fragment_side_menu_header" app:menu="@menu/side_menu"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_gravity="bottom"> <TextView android:textColor="#FFFFFF" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="test" /> <TextView android:textColor="#FFFFFF" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="test2" /> </LinearLayout> </android.support.design.widget.NavigationView> 

诀窍是使用layout_gravity =“bottom” – 这将把你的整个布局在底部和testing,test2被正确堆叠。

用这个..

 <android.support.design.widget.NavigationView android:id="@+id/navigation" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/nav_header" app:itemIconTint="@color/accent" app:itemTextColor="@color/primary_text" app:menu="@menu/navigation_drawer_items"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:background="@color/grey_200" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="@dimen/divider_height" android:background="@color/grey_600"/> <com.facebook.share.widget.LikeView android:id="@+id/like_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="start" android:padding="@dimen/small"/> <com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/small"/> </LinearLayout> </android.support.design.widget.NavigationView> 

然后将底部填充设置为NavigationMenuView

 final View menuView = navigationView.getChildAt(0); final View bottomView = navigationView.getChildAt(1); bottomView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { menuView.setPadding(0, 0, 0, bottomView.getMeasuredHeight()); } }); 

我使用这种forms,为我工作。 在风景和肖像。

 <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.NavigationView android:id="@+id/navigation" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" app:headerLayout="@layout/master_main_header" app:itemIconTint="@color/blue" app:menu="@menu/menu_drawer"> </android.support.design.widget.NavigationView> <Button android:id="@+id/master_btn_closession" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:background="@color/blue" android:text="Cerrar sesión" /> </LinearLayout> </android.support.design.widget.NavigationView> 

试试这个,这个为我工作。

 <android.support.design.widget.NavigationView android:id="@+id/nav_view1" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true"> <ScrollView android:layout_width="wrap_content" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/nav_view" app:headerLayout="@layout/nav_header_admin" app:menu="@menu/activity_admin_drawer"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/lyNavFooter"> <!--INCLUDE YOUR FOOTER HERE --> </LinearLayout> </LinearLayout> </ScrollView> </android.support.design.widget.NavigationView> 
 <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/activity_main_drawer"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:scrollbars="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:elevation="0dp" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer"> ></android.support.design.widget.NavigationView> <LinearLayout android:id="@+id/spacer_to_bottom" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginBottom="0dp"> <include layout="@layout/nav_footer_main" /> </LinearLayout> </android.support.design.widget.NavigationView> 

这是工作,我把图像页脚的导航抽屉(肖像和风景取向)

  <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include layout="@layout/app_bar_main3" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:background="#f00" android:fitsSystemWindows="true" app:menu="@menu/activity_main3_drawer"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:fillViewport="true" android:layout_height="match_parent" android:scrollbars="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.NavigationView android:id="@+id/nav_view" app:elevation="0dp" android:layout_height="wrap_content" android:layout_width="match_parent" android:background="#ff0" app:headerLayout="@layout/nav_header_main3" app:menu="@menu/activity_main3_drawer"> ></android.support.design.widget.NavigationView> <LinearLayout android:id="@+id/spacer_to_bottom" android:layout_width="match_parent" android:orientation="vertical" android:background="#0f0" android:layout_height="0dp" android:layout_weight="1"> <include layout="@layout/nav_footer_main3"></include> </LinearLayout> </LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 

我的nav_footer_main3是

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="60dp"> <ImageView android:id="@+id/imageView" android:layout_gravity="center_horizontal" android:layout_width="200dp" android:layout_height="50dp" android:background="@drawable/logo_1" /> </LinearLayout> 

滚动页脚版本> 23.xx

我终于成功地实现了我想要的,不幸的是,看起来不再像以前版本的23.xx版本(如Andrea Baccega所述)那样抓取ListView的引用并添加页眉和页脚。 这样做的标题仍然是可能的:

  <android.support.design.widget.NavigationView .. app:headerLayout="@layout/item_drawer_footer" .. /> 

但是现在还不能添加页脚。 不过,我发现一个解决方法,以防止你只是想添加一个页脚:你只是颠倒视图,这将添加到底部的行为像一个正常的页脚的头。 只要确保以相反的顺序创build菜单

  // Grab reference to the embedded recycler view RecyclerView mRecyclerView = (RecyclerView) navigationView.getChildAt(0); // Create a LinearLayoutManager and set it to reversed LinearLayoutManager mLayoutManager = new LinearLayoutManager(this); mLayoutManager.setReverseLayout(true); // Apply layout manager to the recycler view mRecyclerView.setLayoutManager(mLayoutManager); 

这是我如何在导航底部添加布局:

  <android.support.design.widget.NavigationView android:id="@+id/navigation_drawer_container" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="1"> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_gravity="top" android:layout_weight="0.8" app:headerLayout="@layout/nav_header_home" app:menu="@menu/activity_home_drawer" /> <android.support.design.widget.NavigationView android:id="@+id/navigation_drawer_bottom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_below="@+id/nav_view" android:layout_weight="0.2"> <LinearLayout android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_below="@+id/scrollView" android:orientation="vertical"> <TextView android:id="@+id/text_dashboard_followUsAt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="16dp" android:paddingStart="16dp" android:text="Follow us at" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="16dp" android:paddingStart="16dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/fb" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/fb" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/fb" /> </LinearLayout> <TextView android:id="@+id/text_dashboard_version" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:layout_marginTop="25dp" android:paddingBottom="5dp" android:paddingEnd="16dp" android:paddingRight="16dp" android:text="Version 1.0" /> </LinearLayout> </android.support.design.widget.NavigationView> </LinearLayout> </RelativeLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.NavigationView>