NavigationView and custom Layout

ぐ巨炮叔叔 提交于 2019-11-26 05:17:03

问题


I\'m using the Designs Support Libraries NavigationView like this:

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

And I have set this 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>

Is there any way to use the NavigationView with a layout rather than a menu?


回答1:


Here's how I solved it, and worked perfectly:

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



回答2:


Yes You can .... As I have done ... Just take your custom layout inside the 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>

The above code work for me... But don't forget to remove app:menu from NavigationView . Otherwise it will overlap your custom view on the menu items.



来源:https://stackoverflow.com/questions/30626324/navigationview-and-custom-layout

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!