我一直在尝试通过使用NavigationViewAndroid设计支持库中的新类来简化一些导航抽屉代码.如果您只想要左侧的图标和右侧的文本(例如文档中的示例),那么它的效果很好,但是如果我想android.support.v7.widget.SwitchCompat在Google Play电影应用中添加一个自定义视图,那该怎么办?看下面的截图)?

我已尝试使用该actionLayout属性指定自定义布局文件,如下面的示例代码中所示,但该属性似乎被忽略,因为它不起作用.
res/menu/navigation_drawer.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/group1"
android:checkableBehavior="single">
<item
android:id="@+id/nav_screen1"
android:icon="@drawable/ic_list_black_24dp"
android:title="Screen 1" />
<item
android:id="@+id/nav_screen2"
android:icon="@drawable/ic_search_black_24dp"
android:title="Screen2"/>
</group>
<group android:id="@+id/group2">
<item
android:id="@+id/nav_custom"
android:icon="@drawable/custom_icon_24dp"
app:actionLayout="@layout/nav_drawer_switch"
android:title="Custom item with switch"/>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings_black_24dp"
android:title="Settings"/>
</group>
</menu>
Run Code Online (Sandbox Code Playgroud)
res/layout/nav_drawer_switch.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.SwitchCompat
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:text="Custom item with switch"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它发挥作用?理想情况下,我想在仍然使用我的菜单布局的同时添加自定义视图,但如果不使用粗糙的黑客(如利用支持库生成的现有布局)那是不可能的,那么我想知道代码最少的解决方案,仍然值得转换NavigationView.
我是android studio的新手,我一直在努力学习如何使用导航抽屉布局.我正在使用Nav Drawer的标准模板,并希望在菜单底部添加一个项目,如下所示:
起初我认为抽屉中的项目在LinearLayout中,并且我可以很容易地做我想要的,但xml代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_camera"
android:icon="@drawable/ic_menu_camera"
android:title="OP1" />
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/ic_menu_gallery"
android:title="OP2" />
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/ic_menu_slideshow"
android:title="OP3" />
<item
android:id="@+id/nav_manage"
android:icon="@drawable/ic_menu_manage"
android:title="OP4" />
</group>
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_logout"
android:title="Log out" />
</group>
Run Code Online (Sandbox Code Playgroud)
有没有办法让包含注销项的组位于底部?提前感谢您的回答!
如何在新的NavigationView中放置没有标题子组的分隔符?
<?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/drawer_armario"
android:icon="@drawable/armario"
android:title="@string/armario" />
<item
android:id="@+id/drawer_amigos"
android:icon="@drawable/amigos"
android:title="@string/amigos" />
</group>
<item android:title="Configuración">
<menu>
<item
android:id="@+id/drawer_ajustes"
android:icon="@drawable/ajustes"
android:title="@string/ajustes" />
<item
android:id="@+id/drawer_ayuda"
android:icon="@drawable/ayuda"
android:title="@string/ayuda" />
<item
android:id="@+id/drawer_sign_out"
android:icon="@drawable/sign_out"
android:title="@string/sign_out" />
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
我想在没有Configuración标题的情况下在amigos和ajustes项目之间添加一条线.
谢谢!!!
android divider android-support-library navigationview android-navigationview
我正在关注帖子"Android设计库NavigationView with footer",在NavigationView底部添加按钮.问题是只出现最后一个NavigationView,它占据整个屏幕高度.
这是我的布局:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Activity here -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">
<android.support.design.widget.NavigationView
android:id="@+id/navigation_menu_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="top"
app:menu="@menu/menu_drawer"/>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_footer_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:menu="@menu/menu_drawer_footer"/>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
结果如下:
我怎样才能解决这个问题?
我的问题是有关最近发布Navigation View的Design Support Library.

我想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>
Run Code Online (Sandbox Code Playgroud)
这是我的布局:
<?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" /> …Run Code Online (Sandbox Code Playgroud) 如何添加页脚NavigationView?在我的情况下,NavigationView项目由菜单资源膨胀.最初我尝试将LinearLayout添加为页脚,但是NavigationView不可滚动且页脚与导航菜单项重叠.我想将Google Play评分细分作为页脚实现,如下图所示:
navigation_drawer.xml:
<LinearLayout
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:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:id="@+id/toolbar"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="@string/app_name" />
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/drawerLayout">
<FrameLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/containerView">
</FrameLayout>
<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="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:id="@+id/shitstuff"
app:itemTextColor="@color/green"
app:menu="@menu/drawermenu"
app:headerLayout="@layout/drawer_header"
android:layout_marginTop="-24dp">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个支持NavigationView的Android应用程序.我不得不质疑我想要它:(1)我想将导航元素分成两个区域:一个位于标题下方,一个位于底端.(2)我想删除分隔符和它下面的元素之间的填充.
我知道有一种方法可以覆盖填充值,这将修复(2).但这感觉有点脏,也许还有另一种方法可以实现这两点.我的想法是获取"设置"元素并以编程方式更改其布局,但到目前为止,我还没有找到一种方法来实现这一点.或者我真的必须自己构建页脚?
另外,我不太确定我应该用Google搜索什么流行语.也许已经有一个简单的答案了.
我目前的代码.现在Activity内部没有布局更改,因此我没有添加它.
activity_main.xml中:
<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/main_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".main.MainActivity">
<!-- The content -->
<LinearLayout>...</LinearLayout>
<!-- The navigation drawer -->
<android.support.design.widget.NavigationView
android:id="@+id/main_navigationview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white"
app:headerLayout="@layout/mainnav_header"
app:itemBackground="@drawable/menu_background"
app:itemIconTint="@color/menu_text"
app:itemTextColor="@color/menu_text"
app:menu="@menu/maindrawer">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
menu.xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:id="@+id/main_drawer_menu1" android:checkableBehavior="single">
<item
android:id="@+id/main_navigationview_request"
android:checkable="false"
android:enabled="false"
android:icon="@drawable/ic_navigationdrawer_request"
android:title="@string/main_navigation_request"
app:actionLayout="@layout/menuitem_default" />
<item
android:id="@+id/main_navigationview_invitations"
android:checked="true"
android:icon="@drawable/ic_navigationdrawer_invitations"
android:title="@string/main_navigation_invitations"
app:actionLayout="@layout/menuitem_default" />
<item
android:id="@+id/main_navigationview_prev"
android:icon="@drawable/ic_navigationdrawer_previous"
android:title="@string/main_navigation_previnvites"
app:actionLayout="@layout/menuitem_default" />
<item
android:id="@+id/main_navigationview_info"
android:icon="@drawable/ic_navigationdrawer_info"
android:title="@string/main_navigation_info"
app:actionLayout="@layout/menuitem_default" />
</group>
<group android:id="@+id/main_drawer_menu2" android:checkableBehavior="single">
<item
android:id="@+id/main_navigationview_settings"
android:checked="true"
android:icon="@drawable/ic_navigationdrawer_settings" …Run Code Online (Sandbox Code Playgroud)