我的Android应用程序中有一个导航抽屉。我可以使用NavigationView在导航抽屉中显示菜单,但是我想在抽屉中显示ListView或Recyclerview。我需要这样做是因为抽屉菜单对于每个用户而言都不相同。用户选择他们想要阅读的报纸。例如:
用户A的列表视图将如下所示:纽约华盛顿邮报
时代,监护人,独立。
用户B的列表视图:《每日邮报》,《华盛顿邮报》,《金融时报》。
如何在NavigationView上添加ListView?
activity_main.xml:
<android.support.v4.widget.DrawerLayout >
...
<android.support.design.widget.CoordinatorLayout>
...
<android.support.design.widget.AppBarLayout>
...
<android.support.v7.widget.Toolbar/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_drawer"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/menu_drawer"
app:layout="@layout/custom_row"/>
menu_drawer.xml:
<group
android:id="@+id/group_1"
android:checkableBehavior="single">
<item
android:id="@+id/nav_first_fragment"
android:icon="@drawable/ic_number_0"
android:title="First" />
<item
android:id="@+id/nav_second_fragment"
android:icon="@drawable/ic_number_1"
android:title="Second" />
<item
android:id="@+id/nav_third_fragment"
android:icon="@drawable/ic_number_2"
android:title="Third" />
</group>
<group
android:id="@+id/group_2"
android:checkableBehavior="single">
<item
android:id="@+id/navigation_item_11"
android:icon="@drawable/ic_number_0"
android:title="My Newspapers">
<menu>
<item
android:id="@+id/navigation_item_1"
android:icon="@drawable/ic_number_0"
android:title="@string/navigation_item_1" />
<item
android:id="@+id/navigation_item_2"
android:icon="@drawable/ic_number_1"
android:title="@string/navigation_item_2" />
<item
android:id="@+id/navigation_item_3"
android:icon="@drawable/ic_number_2"
android:title="@string/navigation_item_3" />
<item
android:id="@+id/navigation_item_4"
android:icon="@drawable/ic_number_3"
android:title="@string/navigation_item_4" />
<item
android:id="@+id/navigation_item_5"
android:icon="@drawable/ic_number_4"
android:title="@string/navigation_item_5" />
</menu>
</item>
</group>
custom_row.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_superhero"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="4dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="4dp"
android:text="Superhero"
android:textColor="@color/colorTextSecondary">
最佳答案
NavigationView
仅仅是RecyclerView
的包装器,该包装器从菜单XML资源中填充列表,并提供了兼容Material的抽屉。确实没有任何特殊逻辑可以使其在导航抽屉中工作。
如果要使用更具动态性的导航抽屉,则应简单地将布局XML中的NavigationView
替换为RecyclerView
,并像填充其他RecyclerView
一样填充它。