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