web-dev-qa-db-fra.com

NavigationView et mise en page personnalisée

J'utilise les bibliothèques de support de Designs NavigationView comme ceci:

<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_height="match_parent"
    Android:layout_width="match_parent"
    Android:fitsSystemWindows="true">

    <!-- put your main layout here -->
    <include layout="@layout/drawer_main_layout"/>

    <Android.support.design.widget.NavigationView
        Android:id="@+id/nav_view"
        Android:layout_height="match_parent"
        Android:layout_width="wrap_content"
        Android:layout_gravity="start"
        Android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/drawer_view"/>

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

Et j'ai mis ce menu:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <group Android:checkableBehavior="single">
        <item
            Android:id="@+id/nav_home"
            Android:icon="@drawable/ic_dashboard"
            Android:title="Home" />
        <item
            Android:id="@+id/nav_messages"
            Android:icon="@drawable/ic_event"
            Android:title="Messages" />
        <item
            Android:id="@+id/nav_friends"
            Android:icon="@drawable/ic_headset"
            Android:title="Friends" />
        <item
            Android:id="@+id/nav_discussion"
            Android:icon="@drawable/ic_forum"
            Android:title="Discussion" />
    </group>

    <item Android:title="Sub items">
        <menu>
            <item
                Android:icon="@drawable/ic_dashboard"
                Android:title="Sub item 1" />
            <item
                Android:icon="@drawable/ic_forum"
                Android:title="Sub item 2" />
        </menu>
    </item>

</menu>

Existe-t-il un moyen d'utiliser NavigationView avec une disposition plutôt qu'un menu?
Merci d'avance

74

Voici comment je l'ai résolu et j'ai parfaitement fonctionné:

<Android.support.design.widget.NavigationView
    Android:id="@+id/navigation"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:layout_gravity="start"
    Android:fitsSystemWindows="true">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

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

        <ListView
            Android:id="@+id/lst_menu_items"
            Android:layout_width="match_parent"
            Android:layout_height="0dp"
            Android:layout_weight="1" />
    </LinearLayout>
</Android.support.design.widget.NavigationView>
171
Hamzeh Soboh

Oui, vous pouvez .... Comme je l'ai fait ... Prenez simplement votre présentation personnalisée à l'intérieur du NavigationView

<Android.support.v4.widget.DrawerLayout
    Android:id="@+id/drawer"
    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.support.design.widget.NavigationView
        Android:id="@+id/navView"
        Android:layout_width="wrap_content"
        Android:layout_height="match_parent"
        Android:layout_gravity="start">

        <ListView
            Android:entries="@array/test"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"/>

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

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

Le code ci-dessus fonctionne pour moi ... Mais n'oubliez pas de supprimer app:menu de NavigationView. Sinon, votre vue personnalisée se superposera sur les éléments de menu.

32
Moinkhan