【发布时间】:2023-03-11 19:21:01
【问题描述】:
我已经创建了一个导航视图,其中一个动态列表是在运行时根据从服务器检索到的数据创建的。它工作正常,并在与服务器成功通信后显示列表。问题是我无法将“设置”和“关于我们”等项目添加到列表底部。以下布局 (activity_main.xml) 导致菜单项覆盖列表视图项:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:elevation="@dimen/padding"
app:menu="@menu/navigation_items"
>
<android.support.v7.widget.ListViewCompat
android:id="@+id/categories_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:layout_gravity="center"
android:layout_marginStart="@dimen/margin_side"
android:layout_marginLeft="@dimen/margin_side"
android:layout_marginTop="@dimen/nav_header_height"
android:layout_marginBottom="48dp"
/>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
这是navigation_items.xml(菜单资源)的内容:
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/nav_bottom"
android:orderInCategory="0">
<item
android:id="@+id/settings"
android:icon="@drawable/settings"
android:title="@string/settings" />
<item
android:id="@+id/about_us"
android:icon="@drawable/info"
android:title="@string/about_us" />
</group>
</menu>
【问题讨论】:
-
你不能在列表中添加菜单项而不是
app:menu="@menu/navigation_items"。像列表视图一样最初带有默认项目,当您有新项目时使用列表视图显示它们 -
能否请您发布您的 Java 代码。
-
是的,没关系,我只是说将其他
Views 直接粘贴在NavigationView中几乎总是会变得不稳定。您仍然可以将这两样东西放在抽屉里,只需将它们放在另一个充当抽屉的ViewGroup中即可。抽屉可以是任何类型的View或ViewGroup。它不一定是NavigationView。这正是新模板默认放置的内容。您只需要确保抽屉View具有layout_gravity属性。 -
我不确定你的整体设计到底是什么,所以我真的不能说,但我认为把这两样东西都放在你的抽屉里没有什么问题。
-
@JasonStack 不,我使用带有标题和其他视图类型的 recyclerview 创建了一个项目,并使用了 ScrimInsetsRelativeLayout 并将设置放在底部和 recyclelview 上方。但这需要大量代码,而还有其他方法可以实现与已经提到的相同的方法,您可以将 recyclerview 移到导航视图之外。将它们都包裹在 RelativeLayout 中。您也可以在底部添加一些阴影
标签: android listview menu navigationview