Android Studio Navigation Drawer app:headerlayout 和 app:menu XML 属性?

Android Studio Navigation Drawer app:headerlayout and app:menu XML attributes?

我是 Android 开发的新手,所以如果我问了一些愚蠢的问题请原谅,但是当我创建了一个 Navigation Drawer 项目时,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:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

我查找了 NavigationView class 希望能多了解一点,但它让我感到困惑,因为我找不到 XML 属性 文档中的 app:headerLayoutapp:menu?

  1. android 和 app 命名空间有什么区别?
  2. 为什么没有记录带有 app 前缀的 XML 属性?
  3. 是否还有隐藏的 XML 属性我应该知道但可能没有记录?如果可以,能否提供一些参考资料?

NavigationView 是支持库的一部分, 以及您要设置的布局,headerLayout 或 menu 将在您的包中定义, 因此,您必须将命名空间与您的包名称一起使用,或者只使用 res-auto 来自动查看您的包布局。