带内部间距的Android NavigationView

带内部间距的Android NavigationView,android,android-layout,android-menu,navigationview,Android,Android Layout,Android Menu,Navigationview,我目前正在开发一款支持NavigationView的Android应用程序。我必须提问,以使其符合我的要求: (1) 我想将导航元素分为两个区域:一个在标题下方的顶部,另一个在底部。 (2) 我想移除分隔器和它下面的元素之间的填充 它的外观与应该的外观: 我知道有一种方法可以覆盖填充值,这将修复(2)。但这感觉有点脏,也许有另一种方法可以实现这两个目标。我的想法是获取“Settings”(设置)元素并以编程方式更改其布局,但到目前为止,我还没有找到一种方法使其工作。或者我真的需要自己制作页脚吗

我目前正在开发一款支持NavigationView的Android应用程序。我必须提问,以使其符合我的要求: (1) 我想将导航元素分为两个区域:一个在标题下方的顶部,另一个在底部。 (2) 我想移除分隔器和它下面的元素之间的填充

它的外观与应该的外观:

我知道有一种方法可以覆盖填充值,这将修复(2)。但这感觉有点脏,也许有另一种方法可以实现这两个目标。我的想法是获取“Settings”(设置)元素并以编程方式更改其布局,但到目前为止,我还没有找到一种方法使其工作。或者我真的需要自己制作页脚吗

此外,我也不太确定我应该在谷歌上搜索哪些流行语。也许已经有了一个简单的答案

我现在的代码。现在活动内部没有布局更改,因此我没有添加它

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>

...
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"
        android:title="@string/main_navigation_settings"
        app:actionLayout="@layout/menuitem_default" />
    <item
        android:id="@+id/main_navigationview_logout"
        android:icon="@drawable/ic_navigationdrawer_logout"
        android:title="@string/main_navigation_logout"

        app:actionLayout="@layout/menuitem_caution" />
</group>


此行删除图标和文本之间的填充

仅在dimen.xml文件中添加以下行

<dimen tools:override="true" name="design_navigation_icon_padding">10dp</dimen>
10dp

能告诉我们您的密码吗?当然可以,对不起。目前只有这两个xml文件。活动内部没有进行布局更改。我更喜欢右边的那个,但这不是我想讨论的问题。我只是想找到一种方法使布局看起来像右边的布局。检查这个答案:以及整个问题。它假定使用NavigationView中的嵌套布局。这是一个相当肮脏的方法,但它允许达到预期的效果。所以我最终用两个单独的列表视图为这个导航栏构建了自己的视图。这不是我最喜欢的解决方案,但现在可以了。如果有什么新的/更好的解决方案,我很想听听。