NavigationView und benutzerdefiniertes Layout

Lesezeit: 4 Minuten

NavigationView und benutzerdefiniertes Layout
Panayiotis Irakleous

Ich verwende die Design Support Libraries NavigationView so was:

<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>

Und ich habe dieses Menü eingestellt:

<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>

Gibt es eine Möglichkeit, die NavigationView mit einem Layout anstelle eines Menüs zu verwenden?

  • können Sie nicht einfach die Header-Ansicht, die nav_header-Datei, verwenden?

    – RuAware

    3. Juni 15 um 17:07 Uhr

  • Ich möchte die Kopfzeilenansicht und anstelle des Menüs ein benutzerdefiniertes Layout verwenden

    – Panayiotis Irakleous

    3. Juni 15 um 17:10 Uhr

So habe ich es gelöst und es hat perfekt funktioniert:

<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>

  • Perfekter Weg! Ich war es leid, das zu finden, aber dumm von mir, warum habe ich nicht versucht, die schließenden Tags zu erweitern! Schön! Ich brauchte tatsächlich eine erweiterbare ListView!

    – sud007

    12. August 15 um 08:53 Uhr

  • Zeichnet dies die Kopfzeile unter die Statusleiste?

    – marilion91

    3. September 15 um 7:44 Uhr

  • Ja, sicher, da es immer noch ein Teil der NavigationView ist.

    – Hamzeh Soboh

    03.09.15 um 08:13 Uhr

  • Dies ist die einzige XML-basierte Arbeitslösung, die ich bisher gefunden habe. +1

    – michnovka

    6. Oktober 15 um 16:10 Uhr

  • Könnte jemand einen Referenzlink für diese Lösung geben? weil ich das versucht habe, aber Probleme bekomme.

    – realpranav

    27. November 15 um 6:29 Uhr


NavigationView und benutzerdefiniertes Layout
Moinkhan

Ja, Sie können …. Wie ich es getan habe … Nehmen Sie einfach Ihr benutzerdefiniertes Layout hinein Navigationsansicht

<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>

Der obige Code funktioniert für mich … Aber vergessen Sie nicht, ihn zu entfernen app:menu von NavigationView . Andernfalls überlappt es Ihre benutzerdefinierte Ansicht der Menüelemente.

  • Die Listenansicht erscheint über der Kopfzeilenansicht. Wie platziere ich es unter der Kopfzeile?

    – Sudhish Mohan

    19. Juni 15 um 9:39 Uhr


  • Wenn Sie verwenden ListView als untergeordnete ansicht kannst du das dann nicht verwenden NavigationView's Header. Wenn Sie also verwenden ListView Sie können headerView hinzufügen ListView.

    – Moinkhan

    19. Juni 15 um 9:42 Uhr


  • Als ich Headerview in Listview hinzufügte, verschwand Headerview. code

    – Sudhish Mohan

    19. Juni 15 um 9:45 Uhr


  • Bro derzeit ist die Design-Unterstützungsbibliothek fehlerhaft … Sie können es tun. Wenn Sie Headerview hinzufügen möchten, müssen Sie es aufblasen und listview programmatisch hinzufügen.

    – Moinkhan

    19. Juni 15 um 9:48 Uhr

  • Was gibt die NavigationView mehr, wenn wir dann ListView mit einer benutzerdefinierten Zeile darin verwenden, wie wir es bisher getan haben?

    – Davideas

    24. Juni 15 um 13:14 Uhr


.

674930cookie-checkNavigationView und benutzerdefiniertes Layout

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy